2016-06-17 48 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') –