使用最新的熊猫API来计算指数移动平均线
问题描述:
我有一个使用熊猫来计算包含浮动数字的列表的指数移动平均值的python v3.6函数。这里是功能,它被测试工作;使用最新的熊猫API来计算指数移动平均线
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使用熊猫的正确方法。
以下是最新的指数移动平均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'
答
的ewm()
方法现在也有类似的API来moving()
和expanding()
:你叫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,跨度大,半衰期的一个或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