Работа с датой и временем в Pandas
Разбор строковых полей с информацией о дате и времени встречается повсеместно, соответственно, любой анализ временного ряда не обходится без знания базовых возможностей по обработке эти данных.
Если имеющаяся в pandas функция pandas.to_datetime() произведет автоматический разбор строки и трансформирует ее значения в тип даты, можно считать, что вам повезло, так как вся сложная работа выполнена за вас. В противном случае строковые данные нужно привести к одному из распространенных видов представления даты и времени. Например, выполнив последовательность действий из урока, можно преобразовать столбец дат к виду:
В последующем для каждого элемента столбца можно вызвать функцию-обработчик и преобразовать данные к типу numpy.datetime64 следующим образом:
df.loc[df.date_time.notnull(),'date_time'] = df.loc[df.date_time.notnull(),'date_time'].map(lambda str: datetime.strptime(str, '%d %B %H:%M %Y'))
df['date_time'] = df['date_time'].astype(np.datetime64)
Как обсуждалось ранее, посредством метода map мы вызываем для каждого ненулевого элемента столбца 'date_time' функцию, которая преобразует строковое значение в тип даты:
Теперь можно исследовать получившийся столбец. Выведем минимальное и максимальное значения:
Допустим, мы хотим использовать интервалы времени в качестве индикаторных переменных (принимают значения 0 или 1) в модели машинного обучения. Тогда мы можем поделить весь временной диапазон на заданное количество равных интервалов с использованием функции pandas.cut (рассказывалось ранее) и добавить к анализируемой таблице столбцы каждого отрезка времени, содержащие только 0 или 1, в зависимости от попадания даты записи в строке в заданный интервал:
Затем посредством вызова функции pandas.get_dummies (используем pd – псевдоним pandas) для каждой категории формируется отдельный столбец с 0 или 1, в зависимости от попадания даты записи в строке в его интервал. После этого громоздкие названия столбцов (интервалы дат и времени) приводятся к более компактному виду (правая граница):
Зачастую очень удобно внести дату в индекс таблицы, чтобы потом использовать продвинутые возможности pandas для работы с временными рядами. Например, вызвав для таблицы df (в качестве примера взята таблица цен на недвижимость в Республике Северная Осетия-Алания) метод set_index получим следующее представление:
df = df.set_index(['date_time'])