2017-10-10 122 views
3

我有一個使用熊貓來計算包含浮動數字的列表的指數移動平均值的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'

回答

2

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