为 pandas 滚动平均值制作自定义 window 类型
Making a custom window type for pandas rolling mean
我知道滚动允许您指定用于计算滚动平均值的 window 类型。文档列出了各种可用的 windows 类型选项 here。但是,我正在尝试使用长度为 4 的对称加权 window 类型,其定义类似于(并且不作为内置提供):
(a + 2*b + 2*c + d)/6
其中 a、b、c 和 d 是在任何给定时间滚动 window 的四个元素,而 [1/6、2/6、2/6、1/6] 将是相关权重。
如果我默认使用 window 类型 (boxcar),我会得到:
import pandas as pd
rs = pd.Series(range(10))
print rs.rolling(4, win_type = 'boxcar').mean()
0 NaN
1 NaN
2 NaN
3 1.5
4 2.5
5 3.5
6 4.5
7 5.5
8 6.5
9 7.5
dtype: float64
知道如何使用自定义滚动 window 类型(在本例中为对称加权移动平均线)吗?
像这样创建一个内核:
import numpy as np
kernel = np.array([1,2,2,1])/6
然后与你的系列进行卷积:
np.convolve(rs,kernel,'same')
我知道滚动允许您指定用于计算滚动平均值的 window 类型。文档列出了各种可用的 windows 类型选项 here。但是,我正在尝试使用长度为 4 的对称加权 window 类型,其定义类似于(并且不作为内置提供):
(a + 2*b + 2*c + d)/6
其中 a、b、c 和 d 是在任何给定时间滚动 window 的四个元素,而 [1/6、2/6、2/6、1/6] 将是相关权重。
如果我默认使用 window 类型 (boxcar),我会得到:
import pandas as pd
rs = pd.Series(range(10))
print rs.rolling(4, win_type = 'boxcar').mean()
0 NaN
1 NaN
2 NaN
3 1.5
4 2.5
5 3.5
6 4.5
7 5.5
8 6.5
9 7.5
dtype: float64
知道如何使用自定义滚动 window 类型(在本例中为对称加权移动平均线)吗?
像这样创建一个内核:
import numpy as np
kernel = np.array([1,2,2,1])/6
然后与你的系列进行卷积:
np.convolve(rs,kernel,'same')