pandasИзменение формыMediumБесплатно~9 мин

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 (строка, уже вычислена)
▶ Решить в pandas-тренажёре

// Решение

Подсказка

Сначала группировка: 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 — когда строишь сразу из исходной таблицы.

// Похожие задачи