使用熊猫我可以计算
pandas.stats.moments.rolling_mean
pandas.stats.moments.ewma
但是如何使用pandas 计算维基百科http://en.wikipedia.org/wiki/Exponential_smoothing中描述的加权移动平均值(WMA)?
是否有熊猫功能来计算WMA?
San*_*ord 14
使用熊猫,您可以使用以下方法计算加权移动平均值 (wma):
.rolling()结合.apply()
下面是一个具有 3 个权重和 window=3的示例:
data = {'colA': random.randint(1, 6, 10)}
df = pd.DataFrame(data)
weights = np.array([0.5, 0.25, 0.25])
sum_weights = np.sum(weights)
df['weighted_ma'] = (df['colA']
.rolling(window=3, center=True)
.apply(lambda x: np.sum(weights*x) / sum_weights, raw=False)
)
Run Code Online (Sandbox Code Playgroud)
请注意,在.rolling()
我使用了 argument center=True
。
您应该检查这是否适用于您的用例或您是否需要center=False
.
不,没有该确切算法的实现。在此处创建了一个关于它的 GitHub 问题:
https://github.com/pydata/pandas/issues/886
我很乐意为此接受拉取请求——实现应该是简单的 Cython 编码并且可以集成到 pandas.stats.moments