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

3

我有一个使用Pandas计算浮点数列表指数移动平均值的Python v3.6函数。以下是该函数,已经进行了测试并且有效:

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以正确的方式使用pandas。
这里是最新指数移动平均值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个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接