滚动意味着与熊猫的定制窗口

时间:2013-11-27 17:28:31

标签: python pandas

有没有办法自定义rolling_mean函数的窗口?

data
1
2
3
4
5
6
7
8

假设窗口设置为2,即计算观察前后的2个数据点的平均值。说第3次观察。在这种情况下,我们将(1+2+3+4+5)/5 = 3。等等。

2 个答案:

答案 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()