有没有办法自定义rolling_mean函数的窗口?
data
1
2
3
4
5
6
7
8
假设窗口设置为2,即计算观察前后的2个数据点的平均值。说第3次观察。在这种情况下,我们将(1+2+3+4+5)/5 = 3
。等等。
答案 0 :(得分:18)
使用前向(或后向)窗口计算通常的滚动平均值,然后使用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 points out所示,如果您希望将滚动平均值居中,请使用
pd.rolling_mean(data, window=5, center=True)
答案 1 :(得分:1)
有关Pandas的最新版本(请参见0.23.4文档https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rolling.html),您不再具有rolling_mean。相反,您将使用
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
以您的示例为例,
df.rolling(5,center=True).mean()