Pandas тренажёр онлайн — 380+ задач с автопроверкой

Pandas тренажёр zasqlpython.ru — 380+ задач (часть из 530+ Python-задач) фокусирующихся именно на pandas. Реальные данные собесов: GMV маркетплейса, cohort retention, sessionization, RFM-сегментация. Через Pyodide — Python в браузере без установки.
Содержание (4 раздела)
  1. Категории pandas-задач
  2. Топ-10 pandas-трюков
  3. Пример задачи: cohort retention
  4. Что говорят пользователи

Категории pandas-задач

Разбивка 380+ задач по темам:

ТемаЗадачУровень
Загрузка данных (read_csv/parquet)20Easy
Фильтрация и индексация40Easy → Medium
groupby + agg60Medium
groupby + transform30Medium
merge/join50Medium
pivot vs pivot_table vs melt30Medium
MultiIndex20Medium → Hard
Time series (resample, rolling)40Medium
Datetime функции20Easy → Medium
Cohort retention15Hard
Sessionization15Hard
Performance (vectorization, dtypes)20Medium → Hard
Real-world кейсы20Medium → Hard

Топ-10 pandas-трюков

Что отличает Junior от Middle на pandas. Эти трюки экономят 50-90% памяти и ускоряют операции в 10-100×.

Пример задачи: cohort retention

Классическая задача с собесов Яндекс/Ozon. Реализуй cohort retention за 3 месяца после регистрации.

import pandas as pd

# events: user_id, event_date
def cohort_retention(events: pd.DataFrame) -> pd.DataFrame:
    # 1. Найти когорту (месяц первой активности) для каждого юзера
    events['cohort_month'] = events.groupby('user_id')['event_date'].transform('min').dt.to_period('M')
    events['event_month'] = events['event_date'].dt.to_period('M')

    # 2. Период активности относительно когорты
    events['months_since_acq'] = (events['event_month'] - events['cohort_month']).apply(lambda x: x.n)

    # 3. Pivot: cohort × months_since → unique active users
    cohort = events.groupby(['cohort_month', 'months_since_acq'])['user_id'].nunique().unstack()
    cohort_sizes = cohort.iloc[:, 0]

    # 4. Retention = active / cohort_size
    retention = cohort.divide(cohort_sizes, axis=0) * 100
    return retention.round(2)

Что говорят пользователи

Цитаты из реальных отзывов на сайте:

Частые вопросы

Pandas или Polars?

Pandas — стандарт (95% компаний). Polars быстрее на 10-100× для больших данных, но экосистема меньше. На собесе спросят pandas, polars знать как plus.

Что такое vectorization?

Замена Python-loop на массовую операцию через numpy/pandas. df["a"] * 2 быстрее чем [x * 2 for x in df["a"]] в 100-1000×.

Чем groupby.apply отличается от transform?

apply возвращает любой результат (scalar, Series, DataFrame). transform возвращает Series той же длины — для broadcasting агрегата обратно.

Сколько задач решить?

Junior: 100 pandas. Middle: 200 (с time series, MultiIndex). Senior: 300+ (с performance оптимизацией). Наш тренажёр закрывает все уровни.

Почему мой DataFrame занимает 10GB?

Object dtype для строк. Решение: astype("category") для повторяющихся, dtype="int8/int16" для целых, chunksize в read_csv, parquet вместо csv.

Как тренироваться эффективно?

По 5-10 задач в день в течение 2-3 месяцев. Решай руками, не копипастом. После задачи смотри эталон — учись паттернам.

Начать практику бесплатно →