Python - 大熊猫:日平均值的月平均值与月平均值本身之间的差异

问题描述:

我对数据框的平均值计算有不同的值。通常情况下,我想他们应该是一样的。 或者有什么区别:Python - 大熊猫:日平均值的月平均值与月平均值本身之间的差异

daily1 = daily_above_zero['2011-2'].mean() 

daily1 
Out[181]: 
P_Sanyo_Gesloten 136.751724 
P_Sanyo_Open  142.491701 
dtype: float64 

daily2 = daily_above_zero['2011-2'].resample('m',how='mean') 

daily2 
Out[187]: 
P_Sanyo_Gesloten 136.751724 
P_Sanyo_Open  142.491701 
dtype: float64 

这:

daily2 = daily_above_zero['2011-2'].resample('D',how='mean').mean() 

daily2 
Out[185]: 
P_Sanyo_Gesloten 132.178545 
P_Sanyo_Open  137.536975 
dtype: float64 
+0

是什么daily_above_zero? –

+0

daily_above_zero是一个熊猫数据框。 – Jomme

In [11]: df = DataFrame(randn(100000,2),index=pd.date_range('20130101',periods=100000,freq='T'),columns=list('AB')) 

In [12]: df 
Out[12]: 
<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 100000 entries, 2013-01-01 00:00:00 to 2013-03-11 10:39:00 
Freq: T 
Data columns (total 2 columns): 
A 100000 non-null values 
B 100000 non-null values 
dtypes: float64(2) 

这是每一个每列的所有意见的总和/ 10万

In [13]: df.mean() 
Out[13]: 
A -0.001421 
B -0.000764 
dtype: float64 

这是每列的平均,而是由一个月分组,所以differening OBS的数量每月

In [14]: df.resample('m',how='mean') 
Out[14]: 
        A   B 
2013-01-31 -0.004447 0.003479 
2013-02-28 0.001062 -0.002656 
2013-03-31 0.000903 -0.008289 

仅有上面的数字,例如平均月平均的平均

In [15]: df.resample('m',how='mean').mean() 
Out[15]: 
A -0.000827 
B -0.002489 
dtype: float64 

集团的每一天,然后取平均值

In [16]: df.resample('D',how='mean') 
Out[16]: 
<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 70 entries, 2013-01-01 00:00:00 to 2013-03-11 00:00:00 
Freq: D 
Data columns (total 2 columns): 
A 70 non-null values 
B 70 non-null values 
dtypes: float64(2) 

In [17]: df.resample('D',how='mean').mean() 
Out[17]: 
A -0.001005 
B -0.001491 
dtype: float64 

均值的平均值例如,如果你的所有观察结果在同一个月,然后(你在上面的第1部分和第2部分)

df.resample('M',how='mean') == df.mean() 

第3部分应该是相同的,只有在你每天都有一整套观察结果的情况下。在你的例子中不清楚如果是这种情况。

In [19]: df['2013-2'].mean() 
Out[19]: 
A 0.001062 
B -0.002656 
dtype: float64 

In [20]: df['2013-2'].resample('D',how='mean').mean() 
Out[20]: 
A 0.001062 
B -0.002656 
dtype: float64 

当我的意思是每一天,我的例子每天都有60级* 24的OBS

In [21]: df['2013-2'].count() 
Out[21]: 
A 40320 
B 40320 
dtype: int64 

In [22]: 24*60 
Out[22]: 1440 

28天的二月

In [23]: 24*60*28 
Out[23]: 40320