2016-06-17 50 views
1

我複製了我從另一個網站的「pandas.io.data」已被註釋掉的代碼。取而代之的是使用 「pandas_datareader」Python 2.7 - 幫助pandas_reader

# Commodity Channel Index Python Code 

# Load the necessary packages and modules 
import pandas as pd 
#import pandas.io.data as web 
import pandas_datareader.data as web 
import matplotlib.pyplot as plt 

# Commodity Channel Index 

def CCI(data, ndays): 
TP = (data['High'] + data['Low'] + data['Close'])/3 
CCI = pd.Series((TP - pd.rolling_mean(TP, ndays))/(0.015 * pd.rolling_std(TP, ndays)), 
name = 'CCI') 
data = data.join(CCI) 
return data 

我的查詢是這裏第12行輸出,我在shell

警告獲得(來自警告模塊):

CCI = pd.Series( (TP - pd.rolling_mean(TP,ndays))/(0.015 * pd.rolling_std(TP,ndays)), FutureWarning:pd.rolling_mean已棄用於Series,將在未來版本中刪除,替換爲 系列。滾動(window = 20,center = False).mean()

任何人都可以建議如何更正代碼?

回答

1

0.18.0版本是API改變 - window functions are now methods

所以使用:

CCI = pd.Series((TP - TP.rolling(ndays).mean())/(0.015 * TP.rolling(ndays).std()), 
name = 'CCI') 

代替:

CCI = pd.Series((TP - pd.rolling_mean(TP, ndays))/(0.015 * pd.rolling_std(TP, ndays)), 
name = 'CCI') 
+0

THX的答覆Jezrael,但同樣的錯誤彈出.... 。 –

+0

這是未經測試的,因爲我沒有數據。你可以給你的問題添加數據樣本? – jezrael

+0

通過pandas 0.18.0文檔管理整理出來...... CCI = pd.Series((TP - TP.rolling(window = ndays,center = False).mean())/(0.015 * TP.rolling (window = ndays,center = False).std()),name ='CCI') –