2016-10-15 26 views
16

Hareketli benim değişim zamanı serisine bir hareketli ortalama hesaplama eklemek istiyorum. Average- pandalar

Değişim = Quandl.get Quandl

den

orijinal veriler ("BUNDESBANK/BBEX3_D_SEK_USD_CA_AC_000" = "xxxxxxx" Kimlik Doğrulama Simgesi)

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 

hareketli ortalama hesaplanması

hareketli ortalama = pd.rolling_mean (Değişim, 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 

Eklemek istiyorum Hesaplanan Ortalama, aynı indeks (Tarih) kullanılarak 'Değer' sonra sağdaki yeni sütun olarak hareket ettirilir. Tercihen ben de haddeleme ortalama yalnızca DataFrame (MA) aşağıda açıklandığı gibi yeni bir sütun olarak eklemek zorunda bir Series döndürür 'MA'

cevap

26

hesaplanan hareketli ortalamasını adlandırmak istiyorum.

bilgi için rolling_mean fonksiyon pandalar yeni sürümleri önerilmemektedir olmuştur. Benim örnekte yeni bir yöntem kullanmış, öncesinde sürümü 0.18.0, pd.rolling_*, pd.expanding_* için ve pd.ewm* modül seviyede fonksiyonlar ve şimdi artık yok Uyarı pandalar documentation

bir alıntıyla aşağıya bakın. Bunlar, Rolling, Expanding ve EWM. nesneleri ve karşılık gelen bir yöntem çağrısı kullanılarak değiştirilir.

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

Eğer birden fazla hareketli ortalama hesaplıyoruz:

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

Sonra tüm MA toplu bir ortalama yapabileceği

df[[f for f in list(df) if "MA" in f]].mean(axis=1)