Найти в Дзене
Властелин машин

Работа с датой и временем в Pandas

Разбор строковых полей с информацией о дате и времени встречается повсеместно, соответственно, любой анализ временного ряда не обходится без знания базовых возможностей по обработке эти данных.

Если имеющаяся в pandas функция pandas.to_datetime() произведет автоматический разбор строки и трансформирует ее значения в тип даты, можно считать, что вам повезло, так как вся сложная работа выполнена за вас. В противном случае строковые данные нужно привести к одному из распространенных видов представления даты и времени. Например, выполнив последовательность действий из урока, можно преобразовать столбец дат к виду:

-2

В последующем для каждого элемента столбца можно вызвать функцию-обработчик и преобразовать данные к типу 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' функцию, которая преобразует строковое значение в тип даты:

-3

Теперь можно исследовать получившийся столбец. Выведем минимальное и максимальное значения:

-4

Допустим мы хотим использовать интервалы времени в качестве индикаторных переменных (принимают значения 0 или 1) в модели машинного обучения. Тогда мы можем поделить весь временной диапазон на заданное количество равных интервалов с использованием функции pandas.cut (рассказывалось ранее) и добавить к анализируемой таблице столбцы каждого отрезка времени, содержащие только 0 или 1, в зависимости от попадания даты записи в строке в заданный интервал:

-5

Затем посредством вызова функции pandas.get_dummies (используем pd – псевдоним pandas) для каждой категории формируется отдельный столбец с 0 или 1, в зависимости от попадания даты записи в строке в его интервал. После этого громоздкие названия столбцов (интервалы дат и времени) приводятся к более компактному виду (правая граница):

-6

Зачастую очень удобно внести дату в индекс таблицы, чтобы потом использовать продвинутые возможности pandas для работы с временными рядами. Например, вызвав для таблицы df (в качестве примера взята таблица цен на недвижимость в Республике Северная Осетия-Алания) метод set_index получим следующее представление:

 df = df.set_index(['date_time'])

-7

Наука
7 млн интересуются