Ответ вслух Junior pivot, melt и сводные обновлено

pivot, melt, stack: что когда

Вопрос

Расскажите, какими способами в pandas меняют форму таблицы и когда какой выбрать.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Данные бывают длинными, где строка это наблюдение, и широкими, где значения разнесены по колонкам. Из длинного в широкий: pivot, если пара индекс-колонка уникальна, и pivottable, если нужна агрегация.

Что должно прозвучать в ответе

  • Длинный формат против широкого

  • `pivot` без агрегации и его ошибка на дублях

  • `pivot_table` с `aggfunc`, `fill_value`, `margins`

  • `melt` для колонок-месяцев

  • `stack`/`unstack` для MultiIndex после groupby

  • `crosstab` для частот двух признаков

Что могут спросить следом

  • Какой aggfunc у pivot_table по умолчанию?
  • Как сделать плоские имена колонок после pivot_table?

Разбор

Данные бывают длинными, где строка это наблюдение, и широкими, где значения разнесены по колонкам. Из длинного в широкий: pivot, если пара индекс-колонка уникальна, и pivot_table, если нужна агрегация. У pivot_table по умолчанию среднее, для выручки явно пишу aggfunc="sum", пустые ячейки закрываю fill_value=0, итоги даёт margins=True. Из широкого в длинный: melt, типичный пример это выгрузка с колонками-месяцами. Если после groupby по двум ключам получился MultiIndex, разворачиваю его unstack, обратно stack. Для частот двух категориальных признаков беру crosstab, с normalize="index" он сразу даёт доли по строкам.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.