我计算简单的移动平均线:
def sma(data_frame, length=15):
# Todo: Be sure about default values of length.
smas = data_frame.Close.rolling(window=length, center=False).mean()
return smas
使用滚动函数可以计算加权移动平均值吗?当我读到in the documentation时,我认为我必须传递win_type参数.但我不确定我必须选择哪一个.
这是加权移动平均线的definition.
提前致谢,
解决方法:
是的,那部分大熊猫真的没有很好的记录.如果您不使用标准窗口类型之一,我认为您可能必须使用rolling.apply().我戳了戳它并让它工作:
>>> import numpy as np
>>> import pandas as pd
>>> d = pd.DataFrame({'a':range(10), 'b':np.random.random(size=10)})
>>> d.b = d.b.round(2)
>>> d
a b
0 0 0.28
1 1 0.70
2 2 0.28
3 3 0.99
4 4 0.72
5 5 0.43
6 6 0.71
7 7 0.75
8 8 0.61
9 9 0.14
>>> wts = np.array([-1, 2])
>>> def f(w):
def g(x):
return (w*x).mean()
return g
>>> d.rolling(window=2).apply(f(wts))
a b
0 NaN NaN
1 1.0 0.560
2 1.5 -0.070
3 2.0 0.850
4 2.5 0.225
5 3.0 0.070
6 3.5 0.495
7 4.0 0.395
8 4.5 0.235
9 5.0 -0.165
我认为这是正确的.关闭的原因是rolling.apply的签名是rolling.apply(func,* args,** kwargs),所以如果你只是直接将它们发送到函数,权重会得到元组解压缩,除非你发送它们作为1元组(wts,),但这很奇怪.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。