2016-06-17 2 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 вывода, что я получаю в оболочке

Предупреждение (из модуля предупреждений):

CCI = pd.Series ((TP - pd.rolling_mean (TP, ndays))/(0.015 * pd.rolling_std (TP, ndays)), FutureWarning: pd.rolling_mean устарел для Series и будет удален в будущей версии, замените на Series. (окно = 20, центр = ложь) .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') –

Смежные вопросы