Pandas文档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而不是明确指定权重时......”),但你是如何做到的?
谢谢!
答案 0 :(得分:1)
我不是数学专家,但 stahlous 解释你需要什么here。
我试试吧:
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
我将window
设置为ndarray
([2,2,2]
)并计算加权总和(rm1
)和加权平均值(rm2
)。
窗口: int或ndarray :
加权窗口规范。如果窗口是整数,则将其视为窗口长度,并且需要win_type表示:布尔值,默认为True
如果True计算加权平均值,则加权和