2016-02-04 5 views
0

У меня проблемы с алгоритмом Боллинджера. Я хочу применить этот алгоритм к моим данным временного ряда.AttributeError: объект 'list' не имеет атрибута 'dtype'

Код:

length = 1440 

dataframe = pd.DataFrame(speed) 

ave = pd.stats.moments.rolling_mean(speed,length) 

sd = pd.stats.moments.rolling_std(speed,length=1440) 

upband = ave + (sd*2) 

dnband = ave - (sd*2) 

print np.round(ave,3), np.round(upband,3), np.round(dnband,3) 

Входной сигнал:

speed=[96.5, 97.0, 93.75, 96.0, 94.5, 95.0, 94.75, 96.0, 96.5, 97.0, 94.75, 97.5, 94.5, 96.0, 92.75, 96.5, 91.5, 97.75, 93.0, 96.5, 92.25, 95.5, 92.5, 95.5, 94.0, 96.5, 94.25, 97.75, 93.0] 

Результат "пр" переменной:

[1440 строк х 1 столбцов] 0 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN 7 NaN 8 NaN 9 NaN 10 NaN 11 NaN 12 NaN 13 NaN 14 NaN 15 NaN 16 NaN 17 NaN

+1

Как я понимаю документацию rolling_mean вы должны пройти серию или DataFrame к rolling_mean, а не список. (См. Http://pandas.pydata.org/pandas-docs/stable/generated/pandas.rolling_mean.html#pandas.rolling_mean) –

+0

Спасибо, я преобразовал список в df, теперь у меня есть еще одна ошибка. У меня есть результат NaN в результате переменных ave и sd. @StefanReinhardt – serenade

+0

это вызвано длиной attibute ... –

ответ

1

Первая точка является, как я Allready упоминается в комментарий rolling_mean нужен DataFrame вы можете достичь этого путем вставки линии

speed = pd.DataFrame(data=speed) 

до ave = ... линии. Тем не менее вы пропустили определить атрибут окна в rolling_std (См: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.rolling_std.html)

+0

Я добавил скорость = pd.DataFrame (данные = скорость), но я снова получаю результат NaN. @StefanReinhardt – serenade

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