【问题标题】:How do I add weights to my moving average function?如何为我的移动平均函数添加权重?
【发布时间】:2020-05-02 02:10:57
【问题描述】:

我可以使用代码计算简单移动平均线:

def movingaverage (values, window):
    s = pd.Series(values)
    sma = s.rolling(window).mean()
    return sma

但现在我想在我的函数中添加权重,以便它可以计算加权移动平均值,我尝试了这个:

def movingaverage (values, window):
    s = pd.Series(values)
    weights = np.arange(1,window)
    sma = s.rolling(window).mean().apply(lambda values: np.dot(values, weights)/weights.sum())
    return sma

但是结果是这样的:

0                                    [nan, nan]
1                                    [nan, nan]
2      [27.555555555555557, 55.111111111111114]
3        [26.88888888888889, 53.77777777777778]
4      [25.444444444444443, 50.888888888888886]
                         ...                   
360     [28.777777777777775, 57.55555555555555]
361      [28.11111111111111, 56.22222222222222]
362                                [27.0, 54.0]
363    [25.666666666666668, 51.333333333333336]
364     [25.777777777777775, 51.55555555555555]

我错了哪一部分?我应该如何在我的函数中添加权重?谢谢!

【问题讨论】:

标签: python pandas numpy


【解决方案1】:
def movingaverage(values, window):
    s = pd.Series(values)
    weights = np.arange(1,window+1)
    sma = s.rolling(window).apply(lambda x: np.sum(x*weights)/weights.sum(), raw=True)
    return sma

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2019-02-13
    • 2018-05-17
    • 2013-09-02
    • 1970-01-01
    • 2023-03-12
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多