Как работает groupby в pandas
Вопрос
Расскажите, как работает groupby в pandas и какие у него есть режимы.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Схема split-apply-combine
`agg` сворачивает группу в одно значение, именованная агрегация
`transform` возвращает результат формы исходной таблицы
`filter` оставляет группы целиком по условию
Ключ уходит в индекс, `as_index=False` или `reset_index`
NaN в ключе по умолчанию выпадает
Что могут спросить следом
- Чем
sizeотличается отcount? - Когда без
applyне обойтись? - Как посчитать долю строки от суммы её группы?
Разбор
groupby работает по схеме split-apply-combine: делит строки на группы по ключу, применяет функцию к каждой группе и склеивает результат. Режимов три. agg сворачивает группу в одно значение: сумма, среднее, число уникальных. Удобнее всего именованная агрегация revenue=("amount", "sum"), она даёт плоские колонки. transform возвращает значение на каждую исходную строку, поэтому подходит, чтобы добавить колонку с суммой группы или долей. filter оставляет или выкидывает группы целиком, например клиентов с тремя и более заказами. Ключи по умолчанию уходят в индекс, это лечится as_index=False. Строки с NaN в ключе по умолчанию выпадают, для них есть dropna=False. Для скорости предпочитаю встроенные агрегаты, apply беру в последнюю очередь.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «groupby и агрегаты»
- groupby: agg или transform
- Почему groupby.apply медленный
- as_index=False в groupby
- Отбор клиентов по условиям на группу
- Выручка и число клиентов по городам на pandas
- Доля заказа в выручке города: transform
- Топ-N заказов в каждом городе на pandas
- agg, transform, filter, apply: форма результата