2017-10-10 17 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を使用するには、このに元の関数を修正。あなたがewm()を呼び出してから、mean()などの互換性の方法でそれに従ってください:

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()方法は今moving()expanding()に似たAPIを持っているを得ました。たとえば:あなたは、引数なしでdf['x'].ewm()をしようとした場合

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 

それはあなたを教えてくれます:

COMの1、スパン、半減期、またはアルファ

そのドキュメントについては、以下を参照を渡す必要があります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

関連する問題