Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Форматирование таблиц в Pandas. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
41
Styler.highlight_between(subset=None, color='yellow', axis=0, left=None, right=None, inclusive='both', props=None)
Параметры метода:
subset – метка, объект array-like или IndexSlice. Необязательный
параметр, предназначенный для выбора определенных строк и столбцов;
color – строка. Цвет фона, используемый для выделения, по умол-
чанию – желтый;
axis – ось. Параметр принимает одно из значений: 0 (или 'index'),
1 (или 'columns') или None. Параметр необходим только в том случае,
если параметры left или right заданы в виде последовательности или объекта array-like. Значение по умолчанию 0;
left, right – скаляры, данные datetime-like, последовательности
или данные array-like. Левая и правая границы диапазона. Значения по умолчанию None. Если значение left равно None, то используется только правая граница, и наоборот. Если оба значения равны None, вы­деляются все элементы;
inclusive – строка. Возможные значения: 'both', 'neither', 'left',
'right'. С помощью параметра определяется, являются интервалы откры­тыми или закрытыми. По умолчанию интервалы закрытые;
props – строка. Значение по умолчанию None. Свойства CSS, ис-
пользуемые для выделения. Если параметр props задан, параметр color не используется. Значение по умолчанию None.
Так можно выделить в датафрейме df значения из интервала
[-.3, .9]: df.style.highlight_between(left=-.3, right=.9, color='lightgreen')
Результат:
Выделим те значения в строке 0, которые попали в интервал
[1, 2], в строке 1 – в интервал [-2, 1], в строке 2 – в интервал [0.1, 3], в строке 3 – в интервал [1, 45]:
df.style.highlight_between(left=[1, -2, .1, 1], right=[2, 1, 3, 45],
axis=0, color="lime")
42
Результат:
Можно выделять цветом не ячейки, а значения, при необходимо-
сти меняя насыщенность шрифта (font-weight). Возможные значения для свойства font-weight: число (100, 900 и т. д.), normal (равносильно заданию значения 400), bold (полужирная насыщенность шрифта, или
700), bolder (сверхжирная), lighter (сверхтонкая). Например: df.style.highlight_between(left=1.5, right=3.5, props='font-weight:
900; color:#e83e8c')
Результат:
2 . 7 . М е т о д h i g h l i g h t _ q u a n t i l e
Метод highlight_quantile аналогичен методу highlight_between:
выделяются значения из интервала, заданного соответствующими кван­тилями q_left и q_right, значения которых лежат в пределах от 0 до 1. При необходимости осуществляется интерполяция. Синтаксис метода:
Styler.highlight_quantile(subset=None, color='yellow', axis=0, q_left=0.0, q_right=1.0, interpolation='linear', inclusive='both', props=None)
Параметры метода аналогичны параметрам метода highlight_be-
tween. Возможные значение параметра interpolation: 'linear', 'lower',
'higher', 'midpoint', 'nearest'.
Квантиль в математической статистике – значение, которое за-
данная случайная величина не превышает с фиксированной вероятно­стью. Если вероятность задана в процентах, то квантиль называется
43
процентилем или перцентилем. Например, фраза «90-й процентиль успеваемости студентов по информатике составляет 70 баллов» озна­чает, что 90 % студентов имеют рейтинг, меньший 70 баллов, а 10 % студентов имеют рейтинг, больший либо равный 70 баллам.
Применим метод highlight_quantile ко всем данным датафрейма,
созданного в параграфе 2.5, и выделим ячейки со значениями, лежа­щими между 50-м и 80-м процентилями:
df.style.highlight_quantile(axis=None, q_left=0.5, q_right=0.8, color="pink")
Результат:
Для того чтобы исключить границы q_left и q_right, в методе
нужно задать значение параметра inclusive="neither".
Так можно в созданном датафрейме df выделить цветом значения,
большие 80-го процентиля, и расставить пунктирные границы для ячеек, содержащих такие значения:
import pandas as pd; import numpy as np df=pd.DataFrame(np.random.randn(4,4), columns= list('BCDE')) df.style.highlight_quantile(axis=None, q_left=0.8, q_right=1, inclusive="left", props='color:blue:; border: 3px dashed green')
Результат:
44
3. У С Т А Н О В К А С Т И Л Я Т А Б Л И Ц Ы
Styler изначально был создан для поддержки параметров форма-
тирования HTML и использует язык стилей CSS для управления мно­гими параметрами стиля, включая цвет, шрифт, границы, фон и т. д.
Основными методами добавления пользовательских стилей CSS
в Styler являются:
– метод set_properties для установки определенных свойств CSS
для каждого элемента данных всей таблицы или ее части;
– метод set_table_styles для управления любой областью таблицы
с указанным CSS;
– метод set_td_classes для прямой связи внешних классов CSS
с ячейками данных или внутренних классов CSS, созданных
set_table_styles().
Также возможно использование функций apply(), applymap()
и pipe() для добавления прямого внутреннего CSS к определенным ячейкам данных.
3 . 1 . М е т о д s e t _ p r o p e r t i e s
Установить определенные свойства CSS для каждого элемента
данных всей таблицы или ее части можно с помощью метода set_properties. Его используют, когда стиль не зависит от значений таб­лицы. Это оболочка для applymap() в случае, когда функция возвращает одинаковые свойства для всех выбранных ячеек.
Синтаксис метода:
Styler.set_properties(subset=None, **kwargs) Параметры метода:
subset – метка, структура данных array-like или IndexSlice. Необя-
зательный параметр, предназначенный для выбора определенных строк и столбцов;
**kwargs – словарь, содержащий пары свойство/значение, кото-
рые будут установлены для каждой ячейки. Символ ** использу­ется для распаковки словарей в другие словари.
45
Так можно задать цвет данных в таблице и ее границу: import pandas as pd; import numpy as np
df = pd.DataFrame(np.random.rand(3, 4)) df.style.set_properties(color="red", border="3px solid green")
Результат:
Так можно вывести на экран первые две строки таблицы, задав
для них цвет ячеек и цвет текста:
df.loc[:1].style.set_properties(**{'background-color': 'blue', 'color': 'white'})
Результат:
Так можно применить выбранный стиль к одной строке таблицы:
df.style.set_properties(subset=(1,),color="red",
border="1mm outset green")
Результат:
Сделать все столбцы одинаковой ширины, оставить в данных два
знака после запятой, отцентрировать содержимое ячейки и добавить между ними бордовую рамку толщиной в 2 пс можно с помощью кода:
properties = {"color": 'red', "border": "2px solid maroon", "width": "65px", "text-align": "center"} df.style.format(precision=2).set_properties(**properties)
46
Результат:
3 . 2 . М е т о д s e t _ t a b l e _ s t y l e s
Для установки стиля таблиц используют метод set_table_styles.
Его можно применять для стилизации как всей таблицы, так и ее от­дельных столбцов, строк или определенных элементов, ссылка на кото­рые осуществляется с помощью селекторов HTML. Синтаксис метода:
Styler.set_table_styles(table_styles=None, axis=0, overwrite=True, css_class_names=None)
Параметры (аргументы) метода:
table_styles – список или словарь. При указании списка каждый от-
дельный элемент table_style должен быть словарем с двумя ключами – selector и props. Селектор CSS (selector) содержит название элемента (строка, ячейка, вся таблица или др.), к которому будет применен стиль (с префиксом UUID таблицы), а props должен содержать атрибуты и их значения. UUID (universally unique identifier – «всемирно уникальный идентификатор») – это 128-битное число, которое при разработке ПО ис­пользуется в качестве уникального идентификатора элементов. Основное назначение UUID – позволить распределенным системам уникально идентифицировать информацию об элементах без центра координации;
axis – ось. Возможные значения: 0 или 'index', 1 или 'columns',
None. Значение по умолчанию 0. Указанные элементы стиля применя-
ются к каждому столбцу (axis=0 или 'index'), к каждой строке (axis=1 или 'columns'). Параметр используется только в том случае, если
table_styles задается словарем;
overwrite – булева переменная. Стили заменяются, если значение
параметра равно True, или дополняются (создается новый стиль), если значение равно False. Правила CSS сохраняются, поэтому последний набор стилей будет доминировать, если селекторы пересекаются. Зна­чение по умолчанию True;
47
css_class_names – словарь. Набор элементов, используемый для за-
мены классов CSS по умолчанию. Классы CSS по умолчанию, значения которых можно заменить, следующие: css_class_names={'row_heading ':
'row_heading', 'col_heading': 'col_heading' , 'index_name': 'index_name', 'col' : 'col', 'row': 'row', 'col_trim': 'col_trim', 'row_trim': 'row_trim', 'level': 'level', 'data': 'data', 'blank': 'blank', 'foot': 'foot'}.
Функция set_table_styles возвращает объект Styler. Структура CSS с селектором и свойствами имеет вид:
[{'selector': 'название селектора', 'props': 'свойство_1: значение_1; свойство_2: значение_2; …;'}]
Совокупность свойство/значение называется декларацией
(declaration). Вся структура называется набором правил.
Название селектора – это имя HTML-элемента. С помощью се-
лектора выбираются элементы для применения заданного в 'props' стиля. Пример задания набора правил для подсветки строк:
[{'selector': 'tr:hover', 'props': 'background-color: fuchsia; font-size: 2em;'}]
Так можно применить один стиль к двум элементам таблицы
(обычной ячейке и ячейке заголовка):
[{'selector': 'td, th', 'props': 'background-color: yellow; \ '}]
Использованные в пособии селекторы приведены в табл. 3.1:
Таблица 3.1
Селекторы и их описание
Селектор /
псевдоселектор
Описание
1
2
*
Универсальный селектор. Позволяет прописать стили для всех элементов HTML без исключения (датафрейма, строки или столбца – зависит от кон- кретного случая)
' '
Применить к определенным элементам. Напри­мер, в результате передачи словаря {'selector': '', 'props': 'border: 5px dashed orange'} в метод set_table_styles будет установлена только внешняя граница таблицы
48
Окончание табл. 3.1
1
2
th
Применить к именам строк и столбцов
th.row_heading
Применить к именам строк
.index_name
Применить к имени индекса
td
Применить к табличным данным
:empty
Использовать для стилизации ячеек, не содержа­щих данные
tr
Применить к строкам таблицы
tr:nth-of­type(odd)
Применить к нечетным строкам
tr:nth-of­type(even)
Применить к четным строкам .rown
Применить к строке с номером n
.coln
Применить к столбцу с номером n
.rown.colm
Применить к конкретной ячейке таблицы
td:hover
Применить к подсказке при наведении курсора на данные
caption
Применить к заголовку таблицы
В качестве свойств часто используют свойства, перечисленные
в табл. 3.2.
Таблица 3.2
Свойства элементов таблицы
Свойство
Описание и возможные значения
1
2
height
Задает высоту ячейки, например 4em
width
Задает ширину ячейки, например 100px
border
Задает границу ячейки таблицы. В качестве значения свойства можно задать ее толщину, стиль и цвет, например 1px solid #000066
border-radius
Устанавливает радиус закругления рамки, например
12px
padding
Задает сдвиг содержимого ячейки относительно гра­ниц, например: 20px 40px 20px 20px – от верхней, пра­вой, нижней и левой
49
Окончание табл. 3.2
1
2
text-align
Задает выравнивание текста, например center (по цен­тру)
font-family
Задает шрифт, например arial
font-style
Задает способ стилизации текста, например normal, italic, oblique, oblique 45deg
font-size
Задает размер шрифта, например 18pt
font-weight
Устанавливает насыщенность начертания шрифта, например bold
text-align
Задает выравнивание текста, например center (по цен­тру)
font-style
Задает способ стилизации текста. Например normal, italic, oblique, oblique 45deg
text-shadow
Устанавливает тень, например 1px 3px red
text-decora­tion
Добавляет оформление текста в виде подчеркивания, перечеркивания, линии над текстом: underline dotted,
green wavy underline, underline overline #FF3028
word-spac­ing
Устанавливает расстояния между словами, например
5px
letter-spac­ing
Задает интервал между буквами, например 1px
max-width
Задает максимальное значение длины строки, после которого происходит переход на другую строку ячейки, например 195px
margin
Задает отступы, например 0 auto
color
Задает цвет текста, например white
background
Задает цвет ячейки, например olive
Совокупность пары свойство/значение можно задавать как с по-
мощью словарей, так и с помощью кортежей. Примеры задания стиля для разных элементов таблицы с помощью кортежей:
{'selector': 'th', 'props': [('background', 'yellow'),('max-width', '195px'), ('color', 'purple'),('text-align', 'center'), ('font-family', 'arial'),('font-size', '18pt'), ]}, {'selector': 'td:hover',
'props': [('background-color', '#ffffb3')]}, {'selector': 'td', 'props': [('font-family', 't'),('font-size', '16pt'),('text-align', 'center')]}
При стилизации отдельных строк и столбцов таблицы с исполь-
зованием словаря его ключи должны соответствовать именам столбцов или значениям индексов в зависимости от значения аргумента axis. Они будут сопоставлены с селекторами CSS строка (row) или столбец (col). Значения MultiIndex в качестве ключей словаря должны быть представ­лены в виде кортежа.
Для стилизации всей таблицы используется селектор *. Созда-
дим датафрейм df, данными которого являются случайные числа, рас­пределенные по нормальному закону N(0, 1). Установим ширину всех ячеек таблицы, включая заголовки, равной 160px (свойство width), вы­ровняем текст в таблице по центру (text-align), установим размер шрифта (font-size), зададим границы ячеек (сплошная линия заданной толщины и цвета – свойство border) и закрасим все ячейки цветом fuch-
sia (background-color или просто background). Код программы:
import pandas as pd import numpy as np df=pd.DataFrame(np.random.randn(4,4), index=["строка_1",'строка_2','строка_3','строка_4'], columns= list('BCDE')) df.style.set_table_styles( [{'selector': '*', 'props': 'background-color: fuchsia;\ font-size: 14pt; border: 1px solid white; \ width: 160px; text-align: center; '}])
Результат работы кода:
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]