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")).
Альтернатива resample внутри groupby. df.groupby([pd.Grouper(key="date", freq="W"), "category"]).agg(...) — группировка по неделе + категории одновременно. Удобно для cohort-анализа.
Через merge с self-join: для каждого юзера найти все даты активности → merge с первой датой → diff в днях → groupby cohort_date, count where diff==7. Подробный пример — в задачах раздела.
Pandas: основы · Pandas groupby · Pandas merge / join · NumPy векторизация · scipy: A/B-тесты · sklearn для аналитика · Графики: matplotlib / seaborn
Работа с датами · Оконные функции
Открыть весь Python-тренажёр (532 задач) →