使用最新的熊猫 API 计算指数移动平均线
Using latest panda APIs to compute exponential 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'
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()
,它会告诉您:
Must pass one of com, span, halflife, or alpha
请参阅下文,了解可能比 OP 中的 link 更清晰的文档:
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
我有一个 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'
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()
,它会告诉您:
Must pass one of com, span, halflife, or alpha
请参阅下文,了解可能比 OP 中的 link 更清晰的文档:
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