2016-10-15 8 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 계산

이동 평균 = 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 

같은 인덱스 (날짜)를 사용하여 '값'다음에 오른쪽으로 새 열로 계산 된 이동 평균. 바람직 나는 또한 롤링 평균 당신은 당신의 DataFrame (MA) 아래에 설명 된대로의 새 열로 추가 가지고 Series 반환 'MA'

답변

26

에 계산 된 이동 평균의 이름을 변경하고 싶습니다.

자세한 내용은 팬더 최신 버전에서는 rolling_mean 기능이 사용되지 않습니다. 내 예에 새로운 방법을 사용하고, 이전 버전 0.18.0, pd.rolling_*, pd.expanding_*, 그리고 pd.ewm*은 모듈 수준의 기능이었고, 지금은 사용되지 않습니다 경고 팬더 documentation

에서 견적은 아래를 참조하십시오. 이들은 Rolling, ExpandingEWM. 개체와 해당 메서드 호출을 사용하여 바뀝니다.

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() 

그런 다음 당신은 모든 MA의 집계 평균을 할 수

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