Как рассчитать сводную статистику?

Open in Colab

Сводная статистика

Каков средний возраст пассажиров?

В pandas доступны различные статистические данные, которые могут быть применены к столбцам с числовыми значениями.

Операции исключают отсутствующие данные и по умолчанию работают со строками в таблице.

Каков средний возраст и стоимость билета для пассажиров?

Четыре спасшихся во время крушения офицера "Титаника"

Статистика, примененная к нескольким столбцам DataFrame, рассчитывается для каждого из числовых столбцов.

Агрегирующая статистика может быть рассчитана для нескольких столбцов одновременно:

С помощью метода DataFrame.agg() могут быть определены комбинации статистики для заданных столбцов:

Подробная информация об описательной статистике представлена в разделе руководства пользователя по описательной статистике.

Агрегирование статистических данных, сгруппированных по категориям

Каков средний возраст мужчин и женщин пассажиров?

Поскольку интерес представляет средний возраст для каждого пола, сначала делается выборка по этим двум столбцам: titanic[["Sex", "Age"]].

Затем метод groupby() применяется к столбцу Sex для создания группы по категориям.

Затем рассчитывается и возвращается средний возраст для каждого пола.

Вычисление заданной статистики (например, mean для возраста) для каждой категории в столбце (например, male/female в столбце Sex) является обычной моделью. Метод groupby используется для поддержки этого типа операций. В более общем плане это соответствует схеме split-apply-combine:

Этапы применения и объединения обычно выполняются в pandas вместе.

В предыдущем примере мы сначала явно выбрали 2 столбца. Если нет, то метод mean применяется к каждому столбцу, содержащему числа:

Не имеет смысла получать среднее значение для столбца Pclass (тип каюты).

Если нас интересует только средний возраст для каждого пола, то выбор столбцов поддерживается и для сгруппированных данных:

Столбец Pclass содержит числовые данные, но на самом деле представляет собой 3 категории (или фактора), соответственно метки "1", "2" и "3". Расчет статистики по ним не имеет большого смысла. pandas предоставляет тип данных Categorical для обработки подобных значений. Более подробная информация представлена в руководстве пользователя в разделе Категориальные данные.

Какова средняя цена билета для каждой комбинации пола и типа каюты?

Группировка может выполняться по нескольким столбцам одновременно. Укажите имена столбцов в виде списка для метода groupby().

Полное описание подхода разделения-применения-объединения приведено в разделе руководства пользователя по групповым операциям.

Подсчитать количество записей по категориям

Какое количество пассажиров в каждом из типов кают?

Метод value_counts() подсчитывает количество записей для каждой категории в колонке.

На самом деле, за этой функцией скрывается групповая операция в сочетании с подсчетом количества записей в каждой группе:

Каюта В-58

В сочетании с groupby могут быть использованы size и count.

В то время как size включает в себя NaN значения и просто предоставляет количество строк (размер таблицы), count исключает отсутствующие значения.

В методе value_counts используйте dropna аргумент для включения или исключения NaN значений.

В руководстве пользователя есть специальный раздел value_counts, см. документацию.

Полное описание подхода разделения-применения-объединения приведено на страницах руководства пользователя по групповым операциям.