Статья Автор: Деникина Н.В., Деникин А.В.

(опц.) groupby: группировка одной строкой

Две копилки превращаются в один вызов

Урок необязательный. Он требует установленной библиотеки pandas. Если её нет, код в этой тетради не запустится — на понимание модуля это не влияет, все навыки уже получены в уроках 1.1–1.3.

В тетради 1.2.3 средние сборы по жанрам заняли десяток строк: два словаря, инициализация ключей, накопление, деление после цикла. В pandas это выглядит так:

df.groupby("genre")["gross"].mean()

Читается слева направо: сгруппируй по жанру, возьми столбец сборов, посчитай среднее в каждой группе. Ровно то, что мы делали руками.


Считай не только среднее

Одна ловушка осталась той же, что и в ручном варианте: среднее по группе из нескольких фильмов ненадёжно. Поэтому рядом со средним всегда полезно смотреть размер группы — agg умеет считать сразу несколько величин:

df.groupby("genre")["gross"].agg(["mean", "count"])

Сверь результат с тетрадью 1.2.3 — порядок жанров совпадёт полностью, вместе со всеми ловушками: наверху окажется группа из 4 фильмов, внизу из 2. Числа те же, потому что и способ тот же, просто записан короче.



Сверь с ручным счётом

Порядок жанров тот же, что в тетради 1.2.3, включая обманчивую верхнюю строку: Family с 518.6 млн при 4 фильмах. groupby честно посчитал среднее по группе из четырёх строк — библиотека не станет предупреждать, что доверять этому числу не стоит.

Отсюда вывод, который важнее самого синтаксиса: инструмент не думает за тебя. Он посчитает всё, о чём попросишь, в том числе бессмыслицу. Замечать бессмыслицу — твоя работа, и именно ради этого мы три урока писали циклы руками.


Какие средние сборы у жанра Animation, в миллионах? Один знак после запятой.

Что делает df.groupby("genre")["gross"].mean()?

Зачем рядом со средним по группе показывать count?

Отметь верные утверждения.
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать