pythongroupby求某一列均值_python – 如何使用groupby获得pandas的月平均值

在尝试使用Pandas的resample方法计算DataFrame中每日数据的月平均值时,发现结果与预期不符,特别是在降水列(PreciAcu)中。Excel计算的平均值与Pandas的结果存在差异,并且发现在一月份的数据计数不正确。如何修正这个问题以获得准确的月平均值?
摘要由CSDN通过智能技术生成

我有下一个DataFrame:

data=pd.read_csv('anual.csv', parse_dates='Fecha', index_col=0)

data

DatetimeIndex: 290 entries, 2011-01-01 00:00:00 to 2011-12-31 00:00:00

Data columns (total 12 columns):

HR 290 non-null values

PreciAcu 290 non-null values

RadSolar 290 non-null values

T 290 non-null values

Presion 290 non-null values

Tmax 290 non-null values

HRmax 290 non-null values

Presionmax 290 non-null values

RadSolarmax 290 non-null values

Tmin 290 non-null values

HRmin 290 non-null values

Presionmin 290 non-null values

dtypes: float64(4), int64(8)

哪里:

data['HR']

Fecha

2011-01-01 37

2011-02-01 70

2011-03-01 62

2011-04-01 69

2011-05-01 72

2011-06-01 71

2011-07-01 71

2011-08-01 70

2011-09-01 40

...

2011-12-17 92

2011-12-18 78

2011-12-19 79

2011-12-20 76

2011-12-21 78

2011-12-22 80

2011-12-23 72

2011-12-24 70

此外,有些月份并不总是完整的.我的目标是从每日数据计算每个月的平均值.这是通过以下方式实现的:

monthly=data.resample('M', how='mean')

HR PreciAcu RadSolar T Presion Tmax

Fecha

2011-01-31 68.586207 3.744828 163.379310 17.496552 0 25.875862

2011-02-28 68.666667 1.966667 208.000000 18.854167 0 28.879167

2011-03-31 69.136364 3.495455 218.090909 20.986364 0 30.359091

2011-04-30 68.956522 1.913043 221.130435 22.165217 0 31.708696

2011-05-31 72.700000 0.550000 201.100000 18.900000 0 27.460000

2011-06-30 70.821429 6.050000 214.000000 23.032143 0 30.621429

2011-07-31 78.034483 5.810345 188.206897 21.503448 0 27.951724

2011-08-31 71.750000 1.028571 214.750000 22.439286 0 30.657143

2011-09-30 72.481481 0.185185 196.962963 21.714815 0 29.596296

2011-10-31 68.083333 1.770833 224.958333 18.683333 0 27.075000

2011-11-30 71.750000 0.812500 169.625000 18.925000 0 26.237500

2011-12-31 71.833333 0.160000 159.533333 17.260000 0 25.403333

我发现的第一个错误是在降水列中,因为所有观测结果在1月份都是0,而在这个特定月份获得的平均值为3.74.

当Excel中的平均值与上面的结果进行比较时,存在显着差异.例如,Febrero的HR平均值是

mean HR using pandas=68.66

mean HR using excel=67

我找到的另一个细节:

data['PreciAcu']['2011-01'].count()

29 and should be 31

难道我做错了什么?

我该如何解决这个错误?

附件csv文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值