Работа с датами в Pandas: datetime, resample, rolling

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

pandasdatetimeresample

Когда данные завязаны на времени, pandas становится одним из самых удобных инструментов в Python. Разберём 3 ключевые темы, которые чаще всего ищут и используют на практике: datetime, resample и rolling.

1. Преобразование дат: datetime

Частая проблема — даты хранятся как строки. Для корректной фильтрации, группировки и агрегации их нужно перевести в datetime-тип:

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

Полезные параметры:

  • format='%Y-%m-%d' — если формат известен, парсинг будет быстрее
  • errors='coerce' — некорректные значения станут NaT
  • dayfirst=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. Практический совет

Связка, которая встречается чаще всего:

  1. pd.to_datetime()
  2. set_index()
  3. resample() для агрегации
  4. rolling() для сглаживания

Именно такой пайплайн обычно используют в аналитике временных рядов, дашбордах и ETL-процессах. ⚙️

Итог

  • datetime — приводит даты к рабочему формату
  • resample — меняет временную гранулярность
  • rolling — считает метрики по скользящему окну

Освоив эти 3 инструмента, можно уверенно обрабатывать временные данные в Pandas — от простых отчётов до продвинутой аналитики. 🚀

Посмотрите подборку каналов про IT — там много полезного по Python, аналитике данных, backend и инфраструктуре.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же