2016-10-15 23 views
16

私は交換平均時系列に移動平均計算を追加したいと思います。 移動平均 - パンダ

取引所= Quandl.get Quandl

から

オリジナルデータ( "ドイツ連邦銀行/ BBEX3_D_SEK_USD_CA_AC_000" = "XXXXXXX" authTokenのは)

Value 
Date    
1989-01-02 6.10500 
1989-01-03 6.07500 
1989-01-04 6.10750 
1989-01-05 6.15250 
1989-01-09 6.25500 
1989-01-10 6.24250 
1989-01-11 6.26250 
1989-01-12 6.23250 
1989-01-13 6.27750 
1989-01-16 6.31250 

が動いAvarageを計算

MOVINGAVERAGE = pd.rolling_mean( Exchange、5)

   Value 
Date   
1989-01-02  NaN 
1989-01-03  NaN 
1989-01-04  NaN 
1989-01-05  NaN 
1989-01-09 6.13900 
1989-01-10 6.16650 
1989-01-11 6.20400 
1989-01-12 6.22900 
1989-01-13 6.25400 
1989-01-16 6.26550 

計算された移動平均は、同じインデックス(Date)を使用して 'Value'の後の右側に新しい列として計算されます。好ましく私はまた、ローリング平均があなただけのDataFrameMA)後述のように新しい列として追加する必要がSeries返す「MA」

答えて

26

に算出した移動平均値の名前を変更したいと思います。

詳細については、rolling_mean機能は、新しいバージョンのファンダでは使用されなくなりました。私は私の例では、新たな方法を使用している、前バージョン0.18.0、pd.rolling_*pd.expanding_*に、そしてpd.ewm*は、モジュールレベルの関数であり、現在は非推奨されている警告パンダdocumentation

からの引用は下記を参照してください。これらは、Rolling,ExpandingおよびEWM.のオブジェクトとそれに対応するメソッド呼び出しを使用して置き換えられます。

df['MA'] = df.rolling(window=5).mean() 

print(df) 
#    Value MA 
# Date     
# 1989-01-02 6.11 NaN 
# 1989-01-03 6.08 NaN 
# 1989-01-04 6.11 NaN 
# 1989-01-05 6.15 NaN 
# 1989-01-09 6.25 6.14 
# 1989-01-10 6.24 6.17 
# 1989-01-11 6.26 6.20 
# 1989-01-12 6.23 6.23 
# 1989-01-13 6.28 6.25 
# 1989-01-16 6.31 6.27 
2

あなたは移動平均つ以上を計算している場合:

for i in range(2,10): 
    df['MA{}'.format(i)] = df.rolling(window=i).mean() 

次に、あなたは

df[[f for f in list(df) if "MA" in f]].mean(axis=1) 
すべてのMAの総平均を行うことができます