使用最新的熊猫API计算指数移动平均值

时间:2017-10-10 16:29:50

标签: python python-3.x pandas moving-average

我有一个python v3.6函数,使用panda计算包含浮点数的列表的指数移动平均值。这是功能,它经过测试可以工作;

def get_moving_average(values, period):
    import pandas as pd
    import numpy as np

    values = np.array(values)
    moving_average = pd.ewma(values, span=period)[-1]
    return moving_average

但是,pd.ewma是一个已弃用的功能,虽然它仍然有效,但我想使用最新的API以正确的方式使用panda。

以下是最新指数移动平均线API的文档。

http://pandas.pydata.org/pandas-docs/stable/api.html#exponentially-weighted-moving-window-functions

我将原始函数修改为使用最新的API;

def get_moving_average(values, period, type="exponential"):
    import pandas as pd
    import numpy as np

    values = np.array(values)
    moving_average = 0
    moving_average = pd.ewm.mean(values, span=period)[-1]
    return moving_average

不幸的是,我收到了错误AttributeError: module 'pandas' has no attribute 'EWM'

1 个答案:

答案 0 :(得分:2)

ewm()方法现在具有与moving()expanding()类似的API:您调用ewm(),然后使用mean()等兼容方法关注它。例如:

df=pd.DataFrame({'x':np.random.randn(5)})

df['x'].ewm(halflife=2).mean()

0   -0.442148
1   -0.318170
2    0.099168
3   -0.062827
4   -0.371739
Name: x, dtype: float64

如果您在没有参数的情况下尝试df['x'].ewm(),它会告诉您:

  

必须传递com,span,halflife或alpha

之一

请参阅下文,了解可能比OP中的链接更清晰的文档:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html#pandas.DataFrame.ewm

http://pandas.pydata.org/pandas-docs/stable/computation.html#exponentially-weighted-windows