Когда данные завязаны на времени, pandas становится одним из самых удобных инструментов в Python. Разберём 3 ключевые темы, которые чаще всего ищут и используют на практике: datetime, resample и rolling.
1. Преобразование дат: datetime
Частая проблема — даты хранятся как строки. Для корректной фильтрации, группировки и агрегации их нужно перевести в datetime-тип:
df['date'] = pd.to_datetime(df['date'])Полезные параметры:
format='%Y-%m-%d'— если формат известен, парсинг будет быстрееerrors='coerce'— некорректные значения станутNaTdayfirst=True— если дата в форматеDD-MM-YYYY
После преобразования становятся доступны удобные операции:
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['weekday'] = df['date'].dt.day_name()2. Работа по времени через индекс
Для большинства временных операций дату лучше сделать индексом:
df = df.set_index('date')Теперь можно легко отбирать диапазоны:
df.loc['2024-01']
df.loc['2024-01-01':'2024-01-31']Это особенно полезно для логов, метрик, продаж, трафика и финансовых данных.
3. Агрегация по периодам: resample
resample() нужен, когда надо пересчитать данные по другому временному шагу:
- из дней в месяцы
- из минут в часы
- из часов в недели
Пример:
monthly_sales = df['sales'].resample('M').sum()
weekly_avg = df['sales'].resample('W').mean()
daily_max = df['sales'].resample('D').max()Популярные частоты:
D— деньW— неделяM— месяцQ— кварталY— годH— час
Важно: resample() работает корректно, если индекс — это DatetimeIndex.
4. Скользящие окна: rolling
rolling() используют, чтобы сгладить шум и увидеть тренд. Классический кейс — скользящее среднее:
df['rolling_mean_7'] = df['sales'].rolling(7).mean()Что это даёт:
- уменьшает влияние случайных скачков
- помогает анализировать тренды
- полезно для мониторинга, аналитики и прогнозирования
Другие варианты:
df['rolling_sum_7'] = df['sales'].rolling(7).sum()
df['rolling_std_7'] = df['sales'].rolling(7).std()Если данные временные, окно можно задавать не только числом, но и периодом:
df['rolling_7d'] = df['sales'].rolling('7D').mean()Это удобнее, если в данных есть пропуски по датам.
5. Практический совет
Связка, которая встречается чаще всего:
pd.to_datetime()set_index()resample()для агрегацииrolling()для сглаживания
Именно такой пайплайн обычно используют в аналитике временных рядов, дашбордах и ETL-процессах. ⚙️
Итог
- datetime — приводит даты к рабочему формату
- resample — меняет временную гранулярность
- rolling — считает метрики по скользящему окну
Освоив эти 3 инструмента, можно уверенно обрабатывать временные данные в Pandas — от простых отчётов до продвинутой аналитики. 🚀
Посмотрите подборку каналов про IT — там много полезного по Python, аналитике данных, backend и инфраструктуре.