pivot, melt, stack: что когда
Вопрос
Расскажите, какими способами в pandas меняют форму таблицы и когда какой выбрать.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Длинный формат против широкого
`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 ошибок.