使用python pandas计算增量平均值

Jmc*_*Jmc 21 python pandas

我想生成一个系列,它是时间序列的增量平均值.这意味着,从第一个日期(索引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)
Run Code Online (Sandbox Code Playgroud)

我希望有一种方法可以做到这一点,而无需循环利用大熊猫.

jpo*_*bst 33

这是Pandas较新版本的更新(从0.18.0开始)

df['value'].expanding().mean()
Run Code Online (Sandbox Code Playgroud)

要么

s.expanding().mean()
Run Code Online (Sandbox Code Playgroud)


And*_*den 13

正如@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
Run Code Online (Sandbox Code Playgroud)

  • 另请查看 jpobst 对于 0.18.0 以后的 Pandas 的答案 (3认同)

pat*_*rry 7

另一种方法是使用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
Run Code Online (Sandbox Code Playgroud)