Изучение API стиля Pandas
Pandas является ключевым инструментом для анализа данных в Python, но не всегда удается сделать данные презентабельными. Из-за этого многие аналитики по-прежнему обращаются к Excel для добавления стилей данных (например, валют) или условного форматирования перед тем, как делиться данными с более широкой аудиторией. В этом посте мы рассмотрим, как взять эти распространенные в Excel функции и показать, как их использовать с помощью API стилей Pandas!
Зачем нам стилизовать данные? Наша конечная цель должна состоять в том, чтобы сделать данные более понятными для наших читателей, сохраняя при этом удобство использования базовых данных, доступных в кадре данных. Например, 10% может быть легче понять, чем значение 0,10, но доля 0,10 более пригодна для дальнейшего анализа.
Оглавление
Что такое API стиля Pandas?
Pandas разработал API стилизации в 2019 году, и с тех пор оно активно развивается. API возвращает новый объект Styler, который имеет полезные методы для применения форматирования и стилизации к фреймам данных. Итоговое оформление достигается с помощью CSS, посредством функций стиля, которые применяются к скалярам, сериям или целым фреймам данных, через пары
Объекты Styler имеют два ключевых метода:
Styler.applymap — применяет стили к каждому элементу отдельно
Styler.apply – применяет стили по столбцам/строкам/фреймам данных.
Давайте начнем с загрузки наших данных.
Загрузка нашего образца набора данных
Мы будем использовать тот же набор данных, что и в нашем руководстве по сводным таблицам, а также применим некоторые из шагов, описанных там. Если вы не знакомы с сводными таблицами в Pandas, мы рекомендуем ознакомиться с нашим учебником
Возможно у Вас отсутствует необходимая зависимость ‘openpyxl’. Это библиотека, которая используется для чтения и записи файлов формата Excel (xlsx). Давайте установим ее.
Мы видим, что у нас есть ряд продаж, предоставляющих информацию о Регионе, Типе, Количестве проданных единиц и общей Стоимости продаж.
Давайте создадим сводную таблицу, следуя нашему учебнику:
Теперь, когда наши данные загружены и сохранены в датафрейм с именем pivot, мы можем начать стилизацию наших данных в Pandas.
Метки типов данных для Pandas
В нашем датафрейме pivot, столбцы Sales показывают общее количество продаж в долларах. Однако это сразу не очевидно для читателя, так как нет символа доллара, а тысячные значения не разделены запятыми. Давайте рассмотрим, как это можно исправить:
Мы можем видеть, что данные становятся сразу легче для понимания!
Строковые форматы можно применять по-разному. Некоторые другие примеры включают в себя:
Плавающее значение с 2 десятичными знаками:
{:.2f}
Дополнить числа нулями:
{:0>2d}
Процент с 2 знаками после запятой:
{:.2f%}
Чтобы узнать больше, ознакомьтесь с этим отличным учебником от Real Python
Если бы мы хотели передать форматирование для нескольких столбцов, то создание словаря, который можно передать функции стилизации, могло бы быть более удобным способом. Например, мы могли бы написать словарь, как показано ниже:
Который затем может быть передан объекту, как показано ниже:
Добавление условного форматирования
Условное форматирование - отличный инструмент, легко доступный в Excel. Он позволяет нам легко идентифицировать значения на основе их содержания. В Pandas это так же просто, но немного скрыто. Мы покажем, насколько просто достичь условного форматирования в Pandas.
Например, если мы хотим выделить любое количество продаж, превышающих 50 000 долларов (скажем, они имеют право на бонус после этой точки). Мы можем сделать это с помощью метода applymap. Прежде чем мы начнем, мы определим функцию, которую можем передать методу applymap.
Мы теперь можем передать эту функцию в метод applymap:
Это приводит к следующему датафрейму:
Мы также можем сочетать стилизацию данных с нашим условным форматированием:
Упрощение чтения цепных методов
Цепочка методов - это невероятно полезная функция в Python, но не всегда легко читаемая. Мы можем разделить цепочку на несколько строк, используя символ , как показано ниже:
Теперь, если мы хотим выделить максимальные и минимальные значения, мы можем достичь этого с помощью другого объекта Styler. Хотя мы могли бы сделать это, используя функции и метод applymap, к счастью, в Pandas уже есть встроенные методы для выделения максимальных и минимальных значений. В приведенном ниже примере мы используем именованные цвета, но вы также можете указать значения в формате hex, чтобы быть более конкретными.
Добавление цветовых шкал в Pandas
Иногда нам может понадобиться определить значения внутри столбца относительно друг друга. Здесь на помощь приходят цветовые шкалы. Используя метод background_gradient
, мы можем с легкостью реализовать это как стиль. Давайте попробуем это сделать.
Перевести на русский
Вы также можете использовать различные цветовые карты (cmaps). Чтобы узнать больше о цветовых картах, ознакомьтесь с этим руководством по Matplotlib.
Ограничение столбцов для форматирования
Давайте теперь создадим сводную таблицу с несколькими столбцами значений:
В результате создается сводная таблица, которая выглядит следующим образом:
Теперь давайте применим метод .background_gradient
Это возвращает следующий кадр данных:
Если мы хотим ограничить это только одним столбцом, мы можем использовать параметр subset, как показано ниже:
Добавление цветных полос в Pandas
Еще один наглядный способ добавить контекст к размеру значения в колонке - это добавить цветные полосы. Это невероятно простой способ предоставить визуализацию, которая также легко печатается. Мы можем достичь этого, используя Python и следующий код:
Это возвращает следующий кадр данных:
Цветные полосы позволяют нам легче видеть шкалу. Также мы можем использовать параметр align
=center
, чтобы отображать полосы слева, если значения отрицательные, и справа, если положительные.
Как повторно использовать стили в Pandas
После того, как вы провели некоторое время, создавая стиль, который вам действительно нравится, вы можете захотеть использовать его снова. К счастью, Pandas упрощает эту задачу, и вам не придется дублировать код, который вы создали с таким трудом. Для этого можно использовать метод .use
на объекте Style другого датафрейма. Например, если у нас есть два датафрейма, style1 и style2, мы можем повторно использовать стиль style1, используя следующий код:
Скрытие индекса или столбцов
Поскольку мы говорим о подготовке данных к отображению, давайте также поговорим о другом аспекте, который Excel упрощает для нас: скрытие столбцов. В Pandas это также можно сделать с помощью объектов стиля. Если бы нам нужно было скрыть индекс, мы могли бы написать:
Аналогично, если мы хотим скрыть столбец, мы можем написать:
Экспорт стилизованных фреймов данных в Excel
В начале статьи я упоминал, что API стилей в Pandas все еще находится в стадии эксперимента. В настоящее время мы не можем экспортировать все эти методы, но можем экспортировать фоновый цвет и цвет. Например, если бы мы хотели экспортировать следующий dataframe:
Мы можем использовать метод .to_excel
для экспорта нашего стилизованного датафрейма в Excel-рабочую книгу:
Может быть, просто использовать Excel?
В некоторых случаях может оказаться более эффективным просто перенести ваши данные в Excel. В этом случае вы можете использовать метод df.to_clipboard()
для копирования всего датафрейма в буфер обмена!
Заключение: изучение API стиля Pandas
В этом посте мы научились стилизовать датафреймы Pandas с помощью Style API Pandas. Мы узнали, как добавлять стили типов данных, условное форматирование, цветовые гаммы и цветные полосы. Похоже на стили, найденные в Excel, Pandas упрощает применение стилей к датафреймам. Это позволяет нам лучше представлять данные и визуально находить тенденции в данных.
Last updated