#python #pandas #statsmodels #autocorrelation
#python #pandas #statsmodels #автокорреляция
Вопрос:
У меня есть следующая серия pandas, где временной интервал не фиксирован. Могу я спросить, как мне найти и построить автокорреляцию за 1/3/5/10 минут? Извините, я новичок в Python… Это торговые данные, в которых цена меняется. Поскольку цена может измениться в любое время, следовательно, данные о времени не имеют фиксированного интервала. Но мне нужно было бы изучить автокорреляцию через 1,3,5 и 10 минут и подумать об использовании plot_acf.
time Price
2019-01-07 07:45:01.064515 152.530
2019-01-07 07:45:01.110072 152.535
2019-01-07 07:45:01.116596 152.535
2019-01-07 07:45:01.116860 152.535
2019-01-07 07:45:01.116905 152.535
Это мой код:
interval = datetime.timedelta(minutes = 10)
series = pd.Series(data_first_session['fair_price'].values, index = data_first_session['time'])
acf = plot_acf(series, lags = interval)
acf.show()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-9-5307c2c9f4df> in <module>()
1 interval = datetime.timedelta(minutes = 10)
2 series = pd.Series(data_first_session['fair_price'].values, index = data_first_session['time'])
----> 3 acf = plot_acf(series, lags = interval)
4 acf.show()
/usr/local/envs/py3env/lib/python3.5/site-packages/statsmodels/graphics/tsaplots.py in plot_acf(x, ax, lags, alpha, use_vlines, unbiased, fft, title, zero, **kwargs)
109 fig, ax = utils.create_mpl_ax(ax)
110
--> 111 lags, nlags, irregular = _prepare_data_corr_plot(x, lags, zero)
112
113 confint = None
/usr/local/envs/py3env/lib/python3.5/site-packages/statsmodels/graphics/tsaplots.py in _prepare_data_corr_plot(x, lags, zero)
18 else:
19 irregular = True
---> 20 lags = np.asanyarray(lags).astype(np.int)
21 nlags = lags.max(0)
22
TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'
Комментарии:
1. Опечатка в вашем
plot_acf
методе ..? Должно бытьlags
, а неlag
2. Я попробую, но могу ли я спросить, правильна ли логика или код? @ChrisA
3. Так не думаю,
lags
параметр должен быть int или массивints
. Передачаtimedelta
завершится неудачей4. да, я пробовал, это выдает ошибку относительно параметра lags, который должен быть целым числом… если это так, есть ли у вас какие-либо идеи, как мне к этому подойти?
5. попробуйте выполнить повторную выборку ваших временных рядов с интервалами в 1 минуту и передать с задержками
[1, 3, 5, 10]
…? так что, может бытьseries.resample('1min').mean()
..?