Как сохранить индекс даты и времени? Предупреждение о значении: был предоставлен неподдерживаемый индекс, который будет игнорироваться, например, при прогнозировании

#python #pandas #matplotlib #indexing #valueerror

#питон #панды #matplotlib #индексирование #ошибка значения

Вопрос:

У меня есть фрейм данных, который разделяется на обучающие и тестовые данные с использованием этого кода:

 train = df.iloc[:1000]
test = df.iloc[1000:]
 

Теперь я хочу использовать ARIMA для прогнозирования будущего:

 model = ARIMA(train['IdCount'],order=(1,1,0))
results = model.fit()
 

Чтобы получить прогнозируемые значения, я использовал этот код:

 start=len(train)
end=len(train) len(test)-1
predictions = results.predict(start=start, end=end, dynamic=False, typ='levels').rename('ARIMA(1,1,0) Predictions')
 

К сожалению, я получил это предупреждение о ценности:

 ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.
 

И предсказания больше не имеют индекса даты и времени, а целочисленные значения в качестве индекса.

Для построения прогнозов вместе с тестовыми данными я использовал этот код:

 test['IdCount'].plot(legend=True,figsize=(12,8))
predictions.plot(legend=True)
 

И затем получите эту ошибку:

 ValueError: view limit minimum -35838.3 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units
 

Как я мог бы сохранить индекс даты и времени для прогнозов вместо целочисленных значений? Или я должен создать этот индекс синтетически? Есть ли причина, по которой этот индекс не поддерживается?

Комментарии:

1. Вы обучаете модель с помощью данных train и получаете модель results . И затем, вы хотите спрогнозировать данные, начинающиеся с индекса, превышающего len(train) . Это не может сработать. Данные модели являются только len(train) длинными. Или я ошибаюсь?

2. Нет, df фрейм данных для всех данных имеет df(len) значение 1157. Итак, я не думаю, что это причина.

3. Чтобы избавиться от предупреждения о значении, вам нужно указать свои даты как df.index