gpt4 book ai didi

python - 使用 Pandas 滚动方法计算加权移动平均值

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:57 27 4
gpt4 key购买 nike

我计算简单移动平均线:

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用于加权移动平均数。

提前致谢

最佳答案

是的,pandas 的那部分确实没有很好的记录。如果您不使用其中一种标准窗口类型,我认为您可能必须使用 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,) 发送,但这很奇怪。

关于python - 使用 Pandas 滚动方法计算加权移动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com