Pandas time series: даты, resample, rolling

47 задач Pyodide в браузере С эталонными решениями 2026 — с реальных собесов
Временные ряды — обязательная тема для product-аналитика: DAU/MAU по дням, недельный retention, скользящие средние выручки. В pandas всё это делается через resample (ресемплинг по периодам), rolling (скользящие окна) и dt-accessor (.dt.year, .dt.weekday). На собесе ждут что ты не только знаешь синтаксис, но и понимаешь когда использовать resample("W").mean() vs rolling(7).mean() — это разные операции, и путают часто.
Начать решать задачи →

Все задачи на «Pandas time series» (47)

FAQ: частые вопросы про pandas time series

resample vs rolling — в чём разница?

resample меняет частоту индекса (например, дневные данные в недельные через .resample("W").sum()). rolling сохраняет частоту, но добавляет окно (последние N точек): .rolling(7).mean() — 7-дневная скользящая средняя.

Как сгруппировать события по дням?

df["date"] = pd.to_datetime(df["timestamp"]); df.groupby(df["date"].dt.date).size() — count по дням. Или через resample, если timestamp уже индекс.

Как посчитать неделю / месяц от даты?

.dt-accessor: df["date"].dt.isocalendar().week, df["date"].dt.month, df["date"].dt.weekday (0=Пн). Для агрегации по неделе чаще используется resample("W") или groupby(pd.Grouper(freq="W")).

Что такое pd.Grouper?

Альтернатива resample внутри groupby. df.groupby([pd.Grouper(key="date", freq="W"), "category"]).agg(...) — группировка по неделе + категории одновременно. Удобно для cohort-анализа.

Как рассчитать day-N retention в pandas?

Через merge с self-join: для каждого юзера найти все даты активности → merge с первой датой → diff в днях → groupby cohort_date, count where diff==7. Подробный пример — в задачах раздела.

Связанные темы Python

Pandas: основы · Pandas groupby · Pandas merge / join · NumPy векторизация · scipy: A/B-тесты · sklearn для аналитика · Графики: matplotlib / seaborn

Связанные темы SQL

Работа с датами · Оконные функции

Открыть весь Python-тренажёр (532 задач) →