resample: дневные → недельные
// Условие
Таблица df: 5 000 заказов за первые полгода 2024 — каждый заказ с датой и суммой.
Что нужно
Посчитай недельную выручку — сумму amount по completed-заказам. Недели начинаются с понедельника ('W-MON').Верни в
result DataFrame с колонками week (Timestamp — понедельник этой недели) и revenue (float, округлено до 2 знаков). Сортировка по week по возрастанию.// Данные
df:
order_id, order_date (datetime), amount, status (completed/cancelled)// Решение
Подсказка
Сначала отфильтруй: df[df['status'] == 'completed'].
resample работает по datetime-индексу. Нужно: .set_index('order_date'), потом .resample('W-MON')['amount'].sum().
После resample — .reset_index() и переименуй колонки: .rename(columns={'order_date': 'week', 'amount': 'revenue'}). Округли revenue до 2 знаков.
Сначала попробуй сам → Показать решение
df = load_data()
completed = df[df['status'] == 'completed'].copy()
weekly = (
completed.set_index('order_date')
.resample('W-MON')['amount'].sum()
.round(2)
.reset_index()
)
result = weekly.rename(columns={'order_date': 'week', 'amount': 'revenue'})
print(result.head())
resample — для time-индексированных данных: сначала set_index на datetime-колонку, потом resample('W-MON'). 'W-MON' = недели начинаются с понедельника. Альтернативы: 'D' (день), 'ME' (конец месяца), 'QE' (квартал), '2W' (две недели). На собесе спросят разницу между resample('ME').sum() и groupby(df.index.month).sum() — первое даёт по календарным месяцам с правильными датами, второе агрегирует все январи вместе.