Делаем ваши фреймы данных (намного !!) красивее
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, мы рекомендуем ознакомиться с моим руководством.
Out:
Date Region Type Units Sales
0 2020-07-11 East Children's Clothing 18 306
1 2020-09-23 North Children's Clothing 14 448
2 2020-04-02 South Women's Clothing 17 425
3 2020-02-28 East Children's Clothing 26 832
4 2020-03-19 West Women's Clothing 3 33
Мы видим, что у нас есть несколько продаж, предоставляющих информацию о регионе, типе, количестве проданных единиц и общей стоимости продаж.
Давайте создадим из этого сводную таблицу, следуя моему предыдущему руководству:
Output:
Sales
Region Type
East Children's Clothing 45849
Men's Clothing 51685
Women's Clothing 70229
North Children's Clothing 37306
Men's Clothing 39975
Women's Clothing 61419
South Children's Clothing 18570
Men's Clothing 18542
Women's Clothing 22203
West Children's Clothing 20182
Men's Clothing 19077
Women's Clothing 22217
Теперь, когда у нас есть данные, загруженные и сохраненные во фрейме данных под названием pivot, мы можем приступить к стилизации наших данных в Pandas.
Метки типов данных для Pandas
В нашем фрейме данных pivot столбцы Продажи представляют общее количество продаж в долларах. Однако это не сразу понятно читателю, поскольку здесь нет знака доллара, а тысячи значений не разделены запятыми. Давайте посмотрим, как это сделать:
Output:
Sales
Region Type
East Children's Clothing $45,849
Men's Clothing $51,685
Women's Clothing $70,229
North Children's Clothing $37,306
Men's Clothing $39,975
Women's Clothing $61,419
South Children's Clothing $18,570
Men's Clothing $18,542
Women's Clothing $22,203
West Children's Clothing $20,182
Men's Clothing $19,077
Women's Clothing $22,217
Мы видим, что данные сразу легче понять!
Строковые форматы можно применять по-разному. Некоторые другие примеры включают:
- Число с плавающей запятой с двумя десятичными знаками: {: .2f}
- Заполните номера нулями: {: 0 ›2d}
- Процент с двумя десятичными знаками: {: .2%}
Если бы мы хотели передать форматирование для нескольких столбцов, было бы проще определить словарь, который можно было бы передать в функцию стилизации. Например, мы могли бы написать словарь, как показано ниже:
Что затем может быть передано объекту, как показано ниже:
Добавление условного форматирования
Условное форматирование - отличный инструмент, легко доступный в Excel. Это позволяет нам легко определять ценности на основе их содержания. В Pandas это также легко, но немного скрыто. Мы покажем, насколько легко добиться условного форматирования в Pandas.
Например, если мы хотим выделить любое количество продаж, превышающее 50 000 долларов (скажем, они имели право на получение бонуса после этого момента). Мы можем сделать это с помощью метода applymap. Прежде чем мы начнем, мы определим функцию, которую мы можем передать методу applymap.
Теперь мы можем передать эту функцию в метод applymap:
Это возвращает следующий фрейм данных:
Мы также можем связать стили данных с нашим условным форматированием:
Упрощение чтения связанных методов
Сцепление методов - невероятно полезная функция в Python, но ее не всегда легко читать. Мы можем разделить цепочку на несколько строк, используя символ \, как показано ниже:
Теперь, допустим, мы хотим выделить максимальное и минимальное значения, мы можем добиться этого с помощью другого объекта Styler. Хотя мы могли добиться этого с помощью функций и метода applymap, Pandas, к счастью, имеет встроенные методы для выделения максимальных и минимальных значений. В приведенном ниже примере мы предоставляем именованные цвета, но вы также можете указать шестнадцатеричные значения, чтобы быть более конкретными.
Добавление цветовых шкал к пандам
Иногда нам нужно идентифицировать значения в столбце относительно друг друга. Здесь в игру вступают цветовые гаммы. Мы можем сделать это довольно просто как метод стиля, используя метод background_gradient. Давайте попробуем:
Это возвращает фрейм данных, как показано ниже:
Вы также можете использовать разные cmap. Чтобы узнать больше о cmaps, ознакомьтесь с этим руководством по Matplotlib.
Ограничение столбцов для форматирования
Теперь создадим сводную таблицу с несколькими столбцами значений:
Это создает сводную таблицу, которая выглядит следующим образом:
sum count
Sales Sales
Region Type
East Children's Clothing 45849 113
Men's Clothing 51685 122
Women's Clothing 70229 176
North Children's Clothing 37306 85
Men's Clothing 39975 89
Women's Clothing 61419 142
South Children's Clothing 18570 45
Men's Clothing 18542 39
Women's Clothing 22203 53
West Children's Clothing 20182 42
Men's Clothing 19077 41
Women's Clothing 22217 53
Теперь применим метод background_gradient:
Это возвращает следующий фрейм данных:
Если мы хотим ограничить это только одним столбцом, мы можем использовать параметр подмножества, как показано ниже:
Добавление цветовых полос к пандам
Другой иллюстративный способ добавить контекст к размеру значения в столбце - это добавить цветные полосы. Это невероятно простой способ предоставить визуальные эффекты, которые также легко распечатать. Мы можем сделать это с помощью Python, используя приведенный ниже код:
Это возвращает следующий фрейм данных:
Цветные полосы позволяют нам легче увидеть масштаб. Мы также можем использовать параметр align = center, чтобы полосы отображались слева, если значения отрицательные, и справа, если они положительные.
Как повторно использовать стили в пандах
Потратив некоторое время на создание стиля, который вам действительно нравится, возможно, вы захотите использовать его повторно. К счастью, Pandas упрощает эту задачу без необходимости дублировать тщательно созданный код. Вы используете метод .use для объекта Style другой дейтаграммы. Например, если у нас есть два фрейма данных, style1 и style 2, мы можем повторно использовать стиль style1, используя следующее:
Скрытие индекса или столбцов
Поскольку мы говорим о подготовке данных к отображению, давайте поговорим о другом элементе, который Excel упрощает: скрытие столбцов. Мы также можем сделать это в Pandas, используя объекты стилизатора. Если бы мы хотели скрыть индекс, мы могли бы написать:
Date Region Type Units Sales
2020-07-11 East Children's Clothing 18.000000 306
2020-09-23 North Children's Clothing 14.000000 448
2020-04-02 South Women's Clothing 17.000000 425
2020-02-28 East Children's Clothing 26.000000 832
2020-03-19 West Women's Clothing 3.000000 33
Точно так же, если бы мы хотели скрыть столбец, мы могли бы написать:
Date Region Type Sales
0 2020-07-11 00:00:00 East Children's Clothing 306
1 2020-09-23 00:00:00 North Children's Clothing 448
2 2020-04-02 00:00:00 South Women's Clothing 425
3 2020-02-28 00:00:00 East Children's Clothing 832
4 2020-03-19 00:00:00 West Women's Clothing 33
Экспорт стилизованных фреймов данных в Excel
Ранее в статье я упоминал, что Style API - это Pandas все еще экспериментальный. В настоящее время мы не можем экспортировать все эти методы, но можем экспортировать background-color и color. Например, если мы хотим экспортировать следующий фрейм данных:
Мы могли бы использовать метод .to_excel для извлечения нашего стилизованного фрейма данных в книгу Excel:
Может быть, просто использовать Excel?
Наконец, могут быть случаи, когда перенос данных в Excel может оказаться более эффективным? В этом случае вы можете просто использовать метод df.to_clipboard (), чтобы скопировать весь фрейм данных в буфер обмена!
В этом нет ничего плохого ...
Спасибо за прочтение!
В этом посте мы узнали, как стилизовать фрейм данных Pandas с помощью API стилей Pandas. Мы узнали, как добавлять стили типов данных, условное форматирование, цветовые шкалы и цветные полосы. Подобно стилям в Excel, Pandas упрощает применение стилей к фреймам данных. Это позволяет нам лучше представлять данные и визуально находить тенденции в данных.
Первоначально опубликовано на https://datagy.io 20 апреля 2020 г.