【问题标题】:Import csv file, calculate average according to the first header and create graph导入csv文件,根据第一个表头计算平均值并创建图形
【发布时间】:2019-12-01 20:58:58
【问题描述】:

我有一个带有这种样式的 csv 格式的列表:

线,ALTURA
L10015,95.95
L10015,98.2
L10015,99.17
L10015,98.17
L10015,95.76
...
L10025,109.44
L10025,116.87
L10025,127.57
...
L10035,111.52
...

我想在 Python 3.x(我正在使用 Spyder)上导入这个 csv 列表,并计算每种类型的线的 ALTURA 平均值(只要线的名称发生变化)。例如,L10015 的平均值,然后是 L10025 的平均值,L10035 的平均值等等。

这个文件有 1,759,679 行(包括标题),我认为 Excel 不是处理这些数据的最佳软件。

我还想创建一个图表,其中包含每条线(y 轴)与线(x 轴)的平均值。

我做到了:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv (r'C:\Users\..\Downloads\teste_gama.csv')
mean1 = df['ALTURA'].mean()
print ('Total arithmetic mean: ' + str(mean1))
groupby_mean1 = df.groupby(['Line']).mean()
print('Mean of values, grouped by Line: ' + str(groupby_mean1))

df.groupby("Line")['ALTURA'].mean().plot(kind='bar')

我想我设法得到每行的平均值。但是,如何修复我的绘图以在垂直方向显示 x 标签并且间隔更大?有没有办法在值 100 中添加一条水平常数线? plot

【问题讨论】:

  • 那么你尝试了什么,它到底有什么问题?
  • 我会支持@jonrsharpe 所说的。 Stack Overflow 不是人们为您完成所有工作的地方。
  • 激励非编程用户在堆栈社区寻求帮助的好方法。

标签: python csv graph average


【解决方案1】:

作为第一个提示,我建议您使用 pandas 包来加载您的 csv。 它将创建一个数据框。使用函数group by 您可以计算每组的平均值。 看看这里:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.mean.html

要创建图表,一旦计算出平均值,就可以使用 pandas 的 plot 函数 https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.plot.html

【讨论】:

  • 谢谢你,Thombou。我只知道一些编程基础知识,检查 pandas 文档对我很有帮助。
猜你喜欢
  • 2016-10-16
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多