Функция resample() в pandas: группировка по времени
df.resample(частота) группирует данные с datetime-индексом по временным интервалам — день (D), неделя (W), месяц (ME) — и считает по ним агрегат. Это специализированный groupby для времени: выручка по месяцам, DAU по неделям, даунсэмплинг секундных логов в минутные. Требует datetime-индекс.
resample работает ТОЛЬКО с datetime-индексом — сначала set_index или передай on='колонка'. Коды частоты в pandas 2.x изменились: 'M' устарел, теперь 'ME' (month end), 'MS' (month start); 'W' — воскресенье-конец, 'W-MON' — понедельник. Пустые периоды resample сохраняет (в отличие от groupby) — заполнит их NaN, что удобно для непрерывного ряда.
Где спрашивают на собеседовании
resample — ключевой инструмент временных рядов, спрашивают «сгруппируй метрику по неделям/месяцам». Ценят знание, что нужен datetime-индекс, актуальные коды частоты (ME вместо M) и разницу с groupby (resample достраивает пустые периоды).
FAQ: частые вопросы про resample
Чем resample отличается от groupby?
resample — это groupby по временным интервалам с datetime-индексом. Отличие: resample сохраняет пустые периоды (заполняя NaN), что даёт непрерывный ряд, а groupby по дате их пропустит.
Какие коды частоты в resample?
D — день, W — неделя, ME — конец месяца, MS — начало месяца, QE — квартал, YE — год, H — час. В pandas 2.x старые M/Q/Y заменены на ME/QE/YE.
Почему resample выдаёт ошибку?
Скорее всего нет datetime-индекса. Сделай df.set_index('дата') с datetime-колонкой или передай on='дата' прямо в resample.