如何使用熊猫自定义权重计算滚动平均值?


问题内容

熊猫文档http://pandas.pydata.org/pandas-
docs/stable/computation.html上
有一个如何计算移动平均值的示例:

ser = pd.Series(np.random.randn(10), index=pd.date_range('1/1/2000', periods=10))
pd.rolling_window(ser, 5, 'boxcar')

第二行计算五个窗口的滚动平均值,其平均值为5,且权重相等。这些文档非常诱人地提到了使用自定义权重的可能性(“传递win_type而不是明确指定权重时……”),但是您怎么做呢?

谢谢!


问题答案:

我不是数学专家,但是请在这里
轻松 解释。

我尝试测试一下:

import pandas as pd

ser = pd.Series([1,1,1], index=pd.date_range('1/1/2000', periods=3))
print ser

rm1 = pd.rolling_window(ser, window=[2,2,2], mean=False)
rm2 = pd.rolling_window(ser, window=[2,2,2]) #, mean=True

print rm1
#
#2000-01-01   NaN
#2000-01-02   NaN
#2000-01-03     6
#Freq: D, dtype: float64
print rm2
#
#2000-01-01   NaN
#2000-01-02   NaN
#2000-01-03     1
#Freq: D, dtype: float64

我将设置windowndarray[2,2,2]),然后计算出加权和(rm1)和加权平均值(rm2)。

pandas.rolling_window

windowint或ndarray
加权窗口规格。如果窗口是整数,则将其视为窗口长度,并且需要win_type

mean布尔值,默认为True
如果True计算加权均值,否则为加权和