Unstack: выручка (month × category) по платформам
// Условие
Таблица заказов df с колонками: month, category, platform, amount.
Что нужно
Агрегируй выручку sum(amount) по (month, category, platform), потом сделай unstack('platform') — платформы (web, mobile) станут колонками.Итог: DataFrame с MultiIndex (month, category), 2 колонки (
web, mobile), 24 строки (6 месяцев × 4 категории), без NaN. Сортировка по индексу. Сохрани в result.// Данные
df:
order_id, order_date, category (electronics/clothing/books/home), platform (web/mobile), amount, month (строка, уже вычислена)// Решение
Подсказка
Сначала группировка: df.groupby(['month','category','platform'])['amount'].sum() — получишь Series с 3-уровневым MultiIndex.
Потом .unstack('platform') — превращает уровень platform в колонки. Получишь DataFrame с MultiIndex (month, category) и колонками (mobile, web).
Отсортируй: .sort_index(). NaN не должно быть — все комбинации есть в данных (n=6000, seed=42).
Сначала попробуй сам → Показать решение
df = load_data()
# groupby → Series с 3-уровневым MultiIndex
grouped = df.groupby(['month', 'category', 'platform'])['amount'].sum()
# unstack превращает уровень platform в колонки
result = grouped.unstack('platform').sort_index()
print(result.head(10))
print(f"shape: {result.shape}")
unstack(level) — превращает один уровень MultiIndex в колонки. Удобно когда уже есть результат groupby и нужно перестроить представление. Альтернатива: pivot_table(index=['month','category'], columns='platform', values='amount', aggfunc='sum') — идиоматично и без stack/unstack, строишь с нуля. На собесе ценно знать оба способа: unstack — когда уже есть groupby-результат, pivot_table — когда строишь сразу из исходной таблицы.