我想生成一个系列,它是时间序列的增量平均值。这意味着,从第一个日期(索引0)开始,存储在行x中的平均值是值的平均值[0:x]
data
index value mean formula
0 4
1 5
2 6
3 7 5.5 average(0-3)
4 4 5.2 average(0-4)
5 5 5.166666667 average(0-5)
6 6 5.285714286 average(0-6)
7 7 5.5 average(0-7)
我希望有一种方法可以做到这一点而不需要循环来利用熊猫。
答案 0 :(得分:25)
以下是Pandas较新版本的更新(从0.18.0开始)
df['value'].expanding().mean()
或
s.expanding().mean()
答案 1 :(得分:11)
正如@TomAugspurger所指出的,你可以使用expanding_mean
:
In [11]: s = pd.Series([4, 5, 6, 7, 4, 5, 6, 7])
In [12]: pd.expanding_mean(s, 4)
Out[12]:
0 NaN
1 NaN
2 NaN
3 5.500000
4 5.200000
5 5.166667
6 5.285714
7 5.500000
dtype: float64
答案 2 :(得分:6)
另一种方法是使用cumsum(),并除以累计项目数,例如:
In [1]:
s = pd.Series([4, 5, 6, 7, 4, 5, 6, 7])
s.cumsum() / pd.Series(np.arange(1, len(s)+1), s.index)
Out[1]:
0 4.000000
1 4.500000
2 5.000000
3 5.500000
4 5.200000
5 5.166667
6 5.285714
7 5.500000
dtype: float64