使用Pandas进行自定义窗口滚动平均值计算

7
有没有一种方法可以自定义rolling_mean函数的窗口?
data
1
2
3
4
5
6
7
8

假设窗口大小设置为2,即计算包括当前观测值在内的前后2个数据点的平均值。以第三个观测值为例。在这种情况下,我们将得到(1+2+3+4+5)/5 = 3。以此类推。

2个回答

20

计算标准的滚动均值,使用前向(或后向)窗口,然后使用shift方法重新对齐它。

data_mean = pd.rolling_mean(data, window=5).shift(-2)
如果您想对观察值前后的2个数据点进行平均(总共5个数据点),则将窗口设置为window=5
例如,
import pandas as pd

data = pd.Series(range(1, 9))

data_mean = pd.rolling_mean(data, window=5).shift(-2)
print(data_mean)
产生。
0   NaN
1   NaN
2     3
3     4
4     5
5     6
6   NaN
7   NaN
dtype: float64
kadee所指出的,如果你希望居中滚动平均值,请使用:
pd.rolling_mean(data, window=5, center=True)

谢谢你的答复。也许我没有很好地阐述我的例子。让我更新一下我的例子。 - zsljulius
2
重新居中,也可以这样做:data_mean = pd.rolling_mean(data, window=5, center=True) - kadee
@kadee:感谢您的改进。 - unutbu

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接