Как оформлять таблицы в Jupyter Notebook?

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Jupyter Notebook – довольно мощный инструмент, который используется для различных вычислений и создания отчетов в интерактивном режиме (не только на языке программирования Python). В свою очередь, форматирование помогает структурировать материал, выделять главные моменты и представлять результаты анализа в наиболее удобной и понятной форме.

pandas.style ?

pandas – одна из наиболее популярных библиотек, используемых аналитиками (и не только). В число преимуществ библиотеки pandas входит возможность форматирования таблиц, что мы и рассмотрим в статье.

Мы ознакомимся с наиболее популярными функциями, а именно как:

  • Добавлять подписи к таблицам
  • Скрывать индекс, если он не хранит в себе важную информацию
  • Выделять определенные значения (максимальные/минимальные/пустые)
  • Использовать условное форматирование
  • Изменять формат значений в ячейках

Итак, приступим!

Для начала импортируем нужную библиотеку:

import pandas as pd 

В pandas за "стильные" функции отвечает свойство (property) .style. Вслед за ним применяются различные методы для форматирования и отображения датафреймов.

df.style.formatting_method() 

Все далее рассмотренные методы можно использовать одновременно, применяя друг за другом (method chaining):

df.style.first_formatting_method().another_cool_method()

В качестве примера возьмем датасет с объявлениями Airbnb в Лондоне.

Условное форматирование

Перейдем к популярным в Excel методам условного форматирования. Условное форматирование используется для выделения необходимых ячеек или значений, а также дает возможность визуализировать данные с помощью гистограммы или с использованием цветовых шкал. Иными словами, для визуального оформления значений в ячейках.

В pandas можно:

  • Выделять максимальное или минимальное значения и пустые ячейки, содержащие null/NaN
  • Использовать градиент
  • Изменять формат представления значений
  • Написать функцию для выделения значений на основе собственных условий
airbnb.head() 

Минимальные и максимальные значения

highlight_max – подсвечивает цветом наибольшее значение. Можно применить либо к каждой строке (axis=0/'index'), либо к каждой колонке (axis=1/'columns').

Например, если указать в качестве оси 'columns', то pandas для каждой строки найдет ту колонку, где значение для этой строки наибольшее. В данном случае для каждого наблюдения наибольшее значение встретилось в столбце host_id.

airbnb.head().style.highlight_max(axis='columns') 

Наглядный пример: в первой таблице используется 'index', поэтому в каждом столбце подсвечивается ряд, где значение оказалось наибольшим. Во второй – 'columns', где для каждой строки находится столбец с наибольшим значением. Может показаться не очень логичным, но ?????

Аналогичная функция для подсветки минимальных значений – highlight_min().

Пропущенные значения

Выделять пропущенные значения можно с помощью highlight_null():

airbnb.head(10).style.highlight_null() 

Градиент

background_gradient – раскрашивает ячейки в зависимости от их значений. В итоге получается что-то похожее на тепловую карту (heatmap). Например, здесь мы применяем метод только для двух столбцов с ценой и числом отзывов, указав палитру Blues:

(airbnb.head(10)  .style  .background_gradient(subset=['price','number_of_reviews'], cmap='Blues') )

style.bar

Визуализировать значения можно прямо в таблице с помощью .bar(). Данный метод принимает несколько аргументов:

  • subset – колонки, для которых нужно построить небольшой барплот
  • color – цвет
  • align – выравнивание столбиков (mid – центр ячейки в (max-min)/2; zero – ноль находится в центре ячейки; left – минимальное значение находится в левой части ячейки)
(listings_by_borough.head(10)  .style  .bar(subset=['num_listings'], color='#67A5EB') ) 

Форматирование отображения чисел

Иногда может понадобиться определенное число знаков после запятой, значок валюты, удаление ненужных символов и так далее. Для этого существует метод .format().

Продолжая пример с таблицей Airbnb,

  1. В столбце с price оставляем 2 знака после точки и добавляем знак $
  2. В следующий format передаём словарь с названиями других колонок для изменения: name к нижнему регистру, избавляемся от пробелов и /в room_type
  3. Выделяем объявление с самой высокой ценой
# import re (airbnb.head()  .style  .format('${:.2f}', subset='price')  .format({'name': lambda x:x.lower(),            'room_type': lambda x: re.sub(r'[ /]', '_', x.lower())})  .highlight_max(subset='price') ) 

Отображение таблиц

Добавить и отредактировать подпись

В самом Jupyter Notebook'е могут быть представлены сразу несколько таблиц. Чтобы упростить навигацию и сделать всё более понятным, хорошо бы их как-то обозначать. Как? Использовать метод set_caption():

(listings_by_borough.head()  .style  .set_caption('Число объявлений в каждом районе Лондона') ) 

Метод set_table_styles позволяет отформатировать выбранный объект. В данном случае нас интересует 'caption' (подпись). В качестве параметра 'props' передаём список, где каждый элемент – кортеж формата (параметр, значение). Например, укажем новый цвет ('color') и размер шрифта ('font-size'):

(listings_by_borough  .style  .set_caption('Число объявлений в каждом районе Лондона')  .set_table_styles([{'selector': 'caption',                       'props': [('color', 'blue'), ('font-size', '15px')]                      }]) ) 

Скрыть индекс

Довольно часто в качестве значений индекса используются обычные числа, которые не имеют никакого смысла. В таких случаях его можно спрятать – .hide_index().

(listings_by_borough.head() 	.style.set_caption('Число объявлений в каждом районе Лондона') 	.hide_index() ) 

set_properties

Еще один полезный метод – set_properties, позволяет более гибко настроить другие параметры отображения. Например, выровнять текст по левому краю ('text-align'), сделать фон черным ('background-color'), а текст – оранжевым ('color'):

(listings_by_borough.head()  .style.set_caption('Число объявлений в каждом районе Лондона')  .hide_index()  .set_table_styles([{     'selector': 'caption',     'props': [('color', 'black'),('font-size', '14px')     ]}])  .set_properties({'text-align': 'left',                     'background-color': 'black',                         'color': 'darkorange'}) ) 

Дополнительные библиотеки

Помимо style в pandas, существуют и другие библиотеки, которые специализируются на форматировании. К примеру:

  • sparklines
  • prettypandas
  • jupyter-datatables

P.S. если вы используете R, то очень хороший пакет – formattable.

Итог

  • Форматирование полезно при составлении каких-либо отчетов.
  • В pandas имеется довольно много методов для изменения внешнего вида таблиц: от условного форматирования до изменения представления ячеек.
  • Всегда есть альтернатива! Например, sparkline, prettypandas и jupyter-datatables.

Источник: m.vk.com

Комментарии: