【问题标题】:Pandas Data Frame Average ValuesPandas 数据框平均值
【发布时间】:2018-03-14 02:38:07
【问题描述】:

我有一个看起来像这样的大型数据集:

 Year    Month    Day    Hour   Count   Value
 2017      1       1      1       59      0
  ..       ..     ..      ..       ..    ..
 2011      12      29     23      60     12 

我正在尝试使用 Pandas 为同一月、日和小时的 Value 列生成平均值。

我以前用过这个:

df = pd.read_csv('pathtofile/values.csv')
df1 = df.groupby([df.Month,df.Day,df.Hour]).mean()

然而,新的 df1 不会对 Value 列进行平均,但它确实提供了 Count 和 Year 列的平均值(我不感兴趣)。我认为这与“值”列中的数据有关,因为大多数值为零。我尝试用空值替换所有零值,但无济于事。

我有什么遗漏的吗?

【问题讨论】:

  • df1= df.groupby(['Month','Day','Hour']) 然后执行 df1['Value'].mean()
  • 值列实际上是数字吗?检查df.info()
  • @PaulH 这似乎是问题所在。它是一个“对象”类型,而不是像其他值一样 Int64。我在下面接受为正确的答案将它转换为一个浮点数,它能够成功地提供平均值。谢谢!

标签: python pandas dataframe data-analysis pandas-groupby


【解决方案1】:

试试

df['Value'] = df['Value'].apply(pd.to_numeric, errors='coerce')
df.groupby(['Month', 'Day', 'Hour']).agg({'Value': np.mean})

【讨论】:

  • 谢谢!问题是 Value 字段是作为对象导入的。将其转换为数字浮点数可以让我计算平均值。
【解决方案2】:

我能够让代码按预期运行。

我制作了自己的名为“values.txt”的测试文件,看起来像

Year,Month,Day,Hour,Count,Value
2017,1,1,1,59,0
2016,1,1,1,45,12
2014,2,3,4,34,43
2013,1,1,1,12,56

然后我进入

>>> import pandas as pd
>>> df = pd.read_csv('values.txt')
>>> df
   Year  Month  Day  Hour  Count  Value
0  2017      1    1     1     59      0
1  2016      1    1     1     45     12
2  2014      2    3     4     34     43
3  2013      1    1     1     12     56

最后我得到了我相信你想要的结果

>>> df1 = df.groupby(['Month', 'Day', 'Hour'])
>>> df1['Value'].mean()
Month  Day  Hour
1      1    1       22.666667
2      3    4       43.000000
Name: Value, dtype: float64

我想我同意 Paul H,您应该检查该列是否为字符串。因为我也成功了:

>>> df1 = df.groupby(['Month', 'Day', 'Hour']).mean()
>>> df1
                       Year      Count      Value
Month Day Hour                                   
1     1   1     2015.333333  38.666667  22.666667
2     3   4     2014.000000  34.000000  43.000000

打印 df1 时可以在输出中进行编辑吗?

【讨论】:

  • 谢谢!正如 Paul H 建议的那样,我可以通过将数据类型转换为浮点数来使其工作。我会支持你,但没有足够的声誉。感谢所有的工作!
  • 无忧乐于提供帮助。需要一些方法来打发我下雪的时间;)
猜你喜欢
  • 2018-11-20
  • 2021-01-19
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2017-04-19
  • 2017-02-16
相关资源
最近更新 更多