Не могу извлечь признаки для обучающей и тестовой выборки
Ноутбук на Colab https://drive.google.com/open?id=1G-FVwAc-uIGuP2FzoY8YohrrBrAmyrb0 Датасет hour_online.csv. Вот начало этого файла:
Time Users 1/1/17 0:00 34002 1/1/17 1:00 37947 1/1/17 2:00 41517 1/1/17 3:00 44476 1/1/17 4:00 46234 1/1/17 5:00 48842
По статье «Открытый курс машинного обучения. Тема 9. Анализ временных рядов с помощью Python» (на Хабр) пытаюсь создать признаки.
По своему тоже не получилось.
Есть БД с датами, которые нужно разбить на обучающие и тестовые выборки для обучения модели временного ряда. Для этого целевой признак нужно сдвинуть вперед. Подобный подход описан в статье habr.com Получаем dataset(как в статье)
dataset = pd.read_csv('hour_online.csv', index_col=['Time'], parse_dates=['Time'])
Далее ошибка на to_datetime():
data = pd.DataFrame(dataset)
data.columns = ["y"]
data.index = data.index.to_datetime()
data["hour"] = data.index.hour
data["weekday"] = data.index.weekday
data['is_weekend'] = data.weekday.isin([5,6])*1
data.head()
Почему ошибка
AttributeError: 'DatetimeIndex' object has no attribute 'to_datetime'
С учетом ответом о «deprecated index.to_datetime» получила ошибку
data = pd.DataFrame(dataset)
data.columns = ["y"]
data.index = data.to_datetime()
data["hour"] = data.hour
data["weekday"] = data.weekday
data['is_weekend'] = data.weekday.isin([5,6])*1
data.head()
AttributeError: 'DataFrame' object has no attribute 'to_datetime'
Ответы (2 шт):
Начиная с версии Pandas 0.22.x находим в документации :
Index.to_datetime(dayfirst=False)
DEPRECATED: use pandas.to_datetime() instead.
А в Pandas 1.0.x Index.to_datetime отсутствует вовсе.
С учетом исправления, внесенного ТС в свой вопрос:
Еще раз, не
data.to_datetime()
а
pd.to_datetime(............)
Вот вам готовый работающий ПРИМЕР с результатом:
date_rng = pd.date_range(start='1/1/2018', end='1/08/2018', freq='H')
string_date_rng = [str(x) for x in date_rng]
timestamp_date_rng = pd.to_datetime(string_date_rng,
infer_datetime_format=True)
timestamp_date_rng
Out[6]:
DatetimeIndex(['2018-01-01 00:00:00', '2018-01-01 01:00:00',
'2018-01-01 02:00:00', '2018-01-01 03:00:00',
'2018-01-01 04:00:00', '2018-01-01 05:00:00',
'2018-01-01 06:00:00', '2018-01-01 07:00:00',
'2018-01-01 08:00:00', '2018-01-01 09:00:00',
...
'2018-01-07 15:00:00', '2018-01-07 16:00:00',
'2018-01-07 17:00:00', '2018-01-07 18:00:00',
'2018-01-07 19:00:00', '2018-01-07 20:00:00',
'2018-01-07 21:00:00', '2018-01-07 22:00:00',
'2018-01-07 23:00:00', '2018-01-08 00:00:00'],
dtype='datetime64[ns]', length=169, freq=None)
dataset = pd.read_csv('/content/drive/My Drive/coursera/hour_online.csv')
data.columns = ["Time","y"]
data['Time'] = pd.to_datetime(data['Time'])
data["hour"] = data['Time'].dt.hour
data["weekday"] = data['Time'].dt.weekday
data['is_weekend'] = data.weekday.isin([5,6])*1