Даты и rolling в pandas: 6 задач с проверкой

Практикум для тех, кто уже умеет создавать DataFrame и выбирать строки. Здесь шесть упражнений: два вопроса на чтение результата и четыре задачи на Python с автоматической проверкой. Можно решать без регистрации; устанавливать pandas для встроенных задач не нужно.

Маршрут: от даты заказа к скользящему показателю

Сначала преобразуйте строку в дату и извлеките нужные компоненты через .dt. Затем перейдите к сортировке наблюдений и скользящим расчётам. В задачах соблюдайте заданные имена столбцов и формат вывода: проверка сравнивает результат с условием конкретного упражнения.

Разобранный пример: почему важен порядок строк

import pandas as pd

df = pd.DataFrame({
    "day": ["2026-01-03", "2026-01-01", "2026-01-02"],
    "sales": [30, 10, 20],
})
df["day"] = pd.to_datetime(df["day"])
df = df.sort_values("day").reset_index(drop=True)
df["mean_2"] = df["sales"].rolling(2).mean()
print(df["sales"].tolist())
print(df["mean_2"].tolist())

Результат:

[10, 20, 30]
[nan, 15.0, 25.0]

Окно из двух наблюдений ещё не заполнено в первой строке. Если явно поставить min_periods=1, первое среднее будет равно 10. Это другой смысл расчёта: первые значения опираются на меньшее число наблюдений.

Что проверить перед запуском

  • Строки дат преобразованы в datetime. Сортировка строк произвольного формата не заменяет разбор дат.
  • Порядок наблюдений задан явно. rolling не сортирует таблицу за вас.
  • rolling(3) означает три строки, а не обязательно три календарных дня. Пропуски дат и несколько событий за день меняют смысл такого окна.
  • Фильтр только по номеру месяца объединит этот месяц за разные годы. В реальном отчёте задавайте нужный период; в упражнении следуйте его условию.
  • Ноль и отсутствие наблюдения имеют разный смысл. Заполнение пропусков должно соответствовать задаче отчёта.

Упражнения по порядку

  1. Временные столбцы: парсинг, .dt-компоненты, длительности и фильтрация — задача по NumPy и pandas — вопрос с проверкой.
  2. pandas dt: год, месяц, день недели и фильтрация дат — код Python.
  3. rolling: скользящие агрегаты по упорядоченным данным — задача по NumPy и pandas — вопрос с проверкой.
  4. pandas rolling: скользящее среднее и размер окна — код Python.
  5. Pandas rolling min_periods: сравните два скользящих средних — код Python.
  6. pandas rolling: скользящая сумма после сортировки таблицы — код Python.

В последнем упражнении окно применяется ко всей таблице после сортировки по региону и месяцу, как явно задано в условии. Это тренировка механики rolling, а не расчёт независимых показателей по регионам. Для отдельного показателя каждого региона потребовалась бы группировка.

Продолжение практики

Для пропусков и типов есть подборка по очистке pandas, для группировки — groupby и merge. Общий маршрут доступен в бесплатном тренажёре NumPy и pandas.

Если с кодом уже уверенно, следующий шаг — выбирать бизнес-метрики и объяснять результат. В платном курсе «Практическая аналитика данных» расчёты на SQL или pandas связаны с кейсами продаж, клиентов и рекламных каналов, а выводы — с дашбордами DataLens. Сначала посмотрите программу и требования к подготовке.