Преобразование форматов даты и времени

В pandas преобразование форматов даты и времени играет важную роль при работе с временными рядами, временными метками и датами. В pandas для работы с датами и временем используются два основных типа данных:

  1. datetime64[ns] — это тип данных для хранения временных меток с точностью до наносекунд.

  2. Timedelta — это тип данных для хранения временных интервалов.

Преобразование строк в дату и время

pd.to_datetime()

Этот метод используется для преобразования строковых значений в объекты datetime. Он автоматически распознаёт формат строки и преобразует его в соответствующий формат даты и времени.

import pandas as pd

# Пример строки с датой
date_str = "2023-08-20"
date_obj = pd.to_datetime(date_str)

print(date_obj)

Выход:

2023-08-20 00:00:00

Указание формата при преобразовании

Если формат даты известен, его можно указать с помощью параметра format, чтобы ускорить преобразование.

date_str = "20-08-2023"
date_obj = pd.to_datetime(date_str, format="%d-%m-%Y")

print(date_obj)

Выход:

2023-08-20 00:00:00

Преобразование столбца DataFrame в дату и время

Часто нужно преобразовать столбец DataFrame с датами, представленными в виде строк, в формат datetime.

data = {'date': ['2023-08-20', '2023-08-21', '2023-08-22']}
df = pd.DataFrame(data)

df['date'] = pd.to_datetime(df['date'])
print(df)

Выход:

        date
0 2023-08-20
1 2023-08-21
2 2023-08-22

Извлечение компонентов даты и времени

После преобразования данных в формат datetime, можно легко извлекать различные компоненты даты и времени.

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
df['weekday'] = df['date'].dt.weekday

print(df)

Выход:

        date  year  month  day  weekday
0 2023-08-20  2023      8   20        6
1 2023-08-21  2023      8   21        0
2 2023-08-22  2023      8   22        1

Преобразование обратно в строку

Для преобразования объекта datetime обратно в строку с нужным форматом можно использовать метод .strftime().

df['date_str'] = df['date'].dt.strftime("%d-%m-%Y")

print(df)

Выход:

        date  year  month  day  weekday   date_str
0 2023-08-20  2023      8   20        6  20-08-2023
1 2023-08-21  2023      8   21        0  21-08-2023
2 2023-08-22  2023      8   22        1  22-08-2023

Работа с временными интервалами

Для работы с временными интервалами (разницей между датами) используется pd.Timedelta.

# Пример создания Timedelta
delta = pd.Timedelta(days=5, hours=2)
print(delta)

# Вычисление разницы между датами
df['diff'] = df['date'] - pd.to_datetime('2023-08-15')
print(df)

Выход:

5 days 02:00:00

        date  year  month  day  weekday   date_str   diff
0 2023-08-20  2023      8   20        6  20-08-2023  5 days
1 2023-08-21  2023      8   21        0  21-08-2023  6 days
2 2023-08-22  2023      8   22        1  22-08-2023  7 days

Смена формата временных меток

Метод .dt.floor(), .dt.ceil() и .dt.round() используются для изменения формата временной метки, например, до ближайшего дня, часа и т.д.

df['date_floor'] = df['date'].dt.floor('D')
df['date_ceil'] = df['date'].dt.ceil('D')
df['date_round'] = df['date'].dt.round('H')

print(df)

Этот процесс позволяет управлять и анализировать данные с временными метками более эффективно.

Last updated