Создание простых сводных таблиц в pandas с помощью sidetable

Open in Colab

Крис Моффитт, редактор сайта об автоматизации бизнес-задач на Python, разработал модуль sidetable.

Со слов автора новый модуль расширяет возможности value_counts() и использует API pandas для регистрации собственных методов.

Давайте разбираться, как он работает.

Для начала установим модуль:

Рассмотрим пример с грантами для школ США, если кратко: Конгресс еще при Обаме выделил 4 миллиарда у.е. для реформы образования, для получения гранта школе надо выбрать одну из моделей реформирования (Model Selected).

Начинаем, как обычно, с импорта модулей:

В результате импорта модуля sidetable у DataFrame появился новый метод stb.

Вызов stb.freq() позволяет построить сводную таблицу частот по штатам:

Этот пример показывает, что CA (California) встречается 92 раза и составляет 12,15% от общего количества школ. Если включить в подсчеты FL (Florida), то будет 163 школы, что составляет 21,5% от общего числа школ, участвующих в грантах.

Можно сравнить этот результат с выводом стандартного метода value_counts().

При установке normalize в True возвращаемый объект будет содержать относительные частоты уникальных значений:

Хм... разница заметна, даже невооруженным глазом.

Можно составить список штатов, которые составляют около 50% от общего числа с помощью аргумента thresh (рус. «молотить») и сгруппировать все остальные штаты в категорию Others:

Теперь видим, что 8 штатов составляют практически 50% от общего количества.

Можем для симпатичности переименовать категорию Others, используя ключевой аргумент other_label:

sidetable позволяет группировать столбцы для лучшего понимания распределения.

Посмотрим, как различные Модели трансформации (Model Selected) применяются в разных регионах?

sidetable позволяет передавать значение value, по которому можно суммировать (вместо подсчета вхождений).

Узнали, что Northeast (Северо-Восток) затратил наименьшее количество средств на реформу, а 37% от общих расходов было потрачено на школы в South (Южном) регионе.

Посмотрим на типы выбранных моделей и определим разбиение 80/20 для выделенных средств:

Можем сравнить с кросс-таблицей crosstab в pandas:

Сравните с:

Можно улучшить читабельность данных в pandas за счет добавления форматирования столбцов Percentage и Amount.

Укажем для этого ключевой аргумент style=True:

Пример построения таблицы пропущенных значений:

Видим 10 пропущенных значений в столбце Region, что составляет чуть менее 1,3% от общего значения в этом столбце.

Похожий результат можно получить с помощью info():

Ссылка на остальную документацию для модуля sidetable.

Для визуализации пропущенных значений см. модуль missingno.