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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
51
Стилизация заголовков таблицы. Поменяем в заголовках таб-
лицы шрифт, его размер и закрасим строки заголовков в желтый цвет. Код программы:
import pandas as pd import numpy as np df=pd.DataFrame(np.random.randn(4,4), # случайные числа index=["строка_1",'строка_2','строка_3','строка_4'], columns= list('BCDE')) headers = { 'selector': 'th', 'props': 'background: yellow; font-family: century;\ font-size: 16pt;' } df.style.set_table_styles([headers])
Результат работы кода:
Зададим разные стили для индексов и названий столбцов и при-
меним их к аналогично созданному датафрейму df:
col = { 'selector': 'th.col_heading', 'props': 'background: olive; \ color: white;\ font-family: Ink Free;\ font-size: 16pt;' } ind = { 'selector': 'th.row_heading',
52
'props': 'background: firebrick; \ color: white;\ font-family: Bradley Hand ITC;\ font-size: 14pt;' } df.style.set_table_styles([ind, col])
Результат:
Числа в таблице меняются, так как каждый раз при запуске кода
генерируется новый набор случайных чисел.
Присвоим имя индексу датафрейма df. Зададим стиль для заголов-
ков датафрейма: все заголовки, кроме имени индекса, сделаем красного цвета, ячейки с ними зальем светло-синим цветом. Для названия индекса зададим цвет шрифта (зеленый), его размер (12), начертание (normal), стиль (italic). Код программы с указанными преобразованиями:
df.index.name='СТРОКИ' index_names = { 'selector': '.index_name', # или "th.row_heading" 'props': 'font-style: italic;\ color: green; font-weight:normal; font-size:12pt' } headers = { 'selector': 'th:not(.index_name)', 'props': 'background: lightblue; color: red;\ font-size: 10pt' } df.style.set_table_styles([index_names, headers])
53
Результат работы кода:
Стилизация табличных данных. Чтобы применить выбранный
стиль ко всем табличным данным (без заголовков), в качестве селектора указывают td (table data). Применим к данным созданного датафрейма df следующие элементы стилизации: цвет данных таблицы – зеленый, размер кегля – 12 pt, выравнивание – по центру, цвет сплошной границы ячеек – фиолетовый, сдвиг содержимого ячейки относительно границ – 15px от верхней, правой, нижней и левой границ. Количество знаков после запятой изменим с 6 (по умолчанию) до 3. Код программы:
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': 'td', 'props': 'color: green;\ font-size: 12pt; border: 1px solid purple; \ text-align: center; padding: 15px; '}]).format('{:.3f}')
Результат:
54
В коде было использовано CSS-свойство padding, с помощью ко-
торого устанавливают внутренние отступы/поля со всех сторон эле­мента. Область отступов – это пространство между содержанием эле­мента и его границей. Отрицательные значения игнорируются. Можно использовать это свойство для установки отступа от одной из сторон. Для этого применяют подсвойства padding-top, padding-right, padding- bottom или padding-left. Значения свойства (или подсвойств) задаются либо в единицах длины (px, em и т. д.), либо в процентах. Если значение задано в процентах, то оно устанавливает размер отступа относительно ширины родительского блока. Если задано одно значение, например padding: 10px, то оно задает отступы ото всех сторон, если задано два значения, например padding: 10px 20px, то они задают отступы сверху и снизу (10px в приведенном примере), слева и справа (20px). При зада­нии трех чисел (padding: 10px 3% 20px) отступы устанавливаются так: сверху – 10px, слева и справа – отступы по 3 %, снизу – отступ 20px. Если задано четыре значения, то они задают отступы сверху, справа, снизу и слева (например, padding: 10px 15px 20px 30px).
Для стилизации столбцов датафрейма можно использовать либо
имя столбца плюс селектор, либо только селектор. Создадим датафрейм df и применим разные стили к столбцам таблицы: зададим цвет шрифта всего столбца С, включая заголовок, а в столбце B изменим цвет только у данных:
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({ 'C': [{'selector': '', 'props': [('color', 'red'),('font-size', '1em')]}], 'B': [{'selector': 'td', 'props': 'color: blue;'}] }, overwrite=False)
Результат:
55
Тот же результат можно было получить с использованием селек-
торов col1 и td.col0, выполнив код:
col_1= {'selector':'.col1', 'props': [('color', 'red'),('font-size', '1em')]} col_2={'selector':'td.col0', 'props': [('color', 'blue')]} df.style.set_table_styles([col_1, col_2])
Для стилизации строк таблицы используют либо индекс строки
и селектор, указывающий, к каким данным строки применить стилиза­цию, либо только селектор, если изменения затрагивают всю строку. Так можно изменить размер кегля в данных строки с номером 0 (индекс строки: строка_1):
df.style.set_table_styles({ 'строка_1': [{'selector': 'td', 'props': [('font-size', '16px')]}] }, axis=1, overwrite=False)
Результат:
Тот же результат можно было получить, выполнив код:
df.style.set_table_styles( [{'selector': 'td.row0', 'props': [('font-size', '16px')]}])
При стандартном выводе датафрейма на экран он представляет
собой чередующиеся белые и серые строки без границ ячеек. Создадим новый датафрейм df_new. Закрасим заголовки строк и столбцов дата­фрейма в желтый цвет, нечетные строки сделаем оливкового цвета, а четные – голубого. Содержимое ячеек выровняем по центру. Заго­ловки столбцов сделаем в несколько строк. Код программы:
import pandas as pd import numpy as np df_new=pd.DataFrame(np.random.randn(4,2),
56
columns=['Исходные данные', 'Значение 2 - \ результаты расчетов']) df_new.style.set_table_styles([ {'selector': 'th', 'props': 'text-align: center; color: red;\ font-size: 1.5em; background: yellow;\ max-width: 140px'}, {'selector': 'td', 'props': 'text-align: center;\ font-weight: bold;'}, {'selector': 'tr:nth-of-type(odd)', 'props': [('background', 'olive')]}, {'selector': 'tr:nth-of-type(even)', 'props': [('background', 'cyan')]}, ], overwrite=False)
Результат:
С помощью свойства max-width со значением 140px (max-width:
140px) была задана максимальная ширина ячейки, после достижения которой текст переносился на другую строку.
Стилизация таблицы с помощью псевдокласса :hover. С помощью
селектора hover можно задать действия, которые будут происходить при наведении курсора на элементы таблицы. При этом нужно указать, при наведении на какой элемент таблицы эти действия будут осуществляться: при наведении на строку, заголовок, отдельную ячейку и т. д.
Создадим датафрейм df, в котором при перемещении курсора по
табличным данным предусмотрим выделение строки, в которой нахо­дится курсор, желтым цветом. Код программы:
import pandas as pd ; import numpy as np df=pd.DataFrame(np.random.randn(4,4),
57
index=["строка_1",'строка_2','строка_3','строка_4'], columns= list('BCDE')) df.style.set_table_styles([{'selector': 'tr:hover', 'props': [('background-color', 'yellow')]}])
Результат:
Если при наведении курсора нужно закрасить не всю строку,
а лишь ячейку с данными, в которой курсор находится, тип селектора нужно заменить на 'td:hover':
df.style.set_table_styles([{'selector': 'td:hover', 'props': [('background-color', 'yellow')]}])
Результат:
Если нужно закрасить заголовки таблицы, в качестве селектора
можно выбрать th:hover, th.col_heading:hover или th.row_heading:hover.
Задать свойства шрифта и фона можно с использованием строк
CSS. Например, так:
df.style.set_table_styles( [{'selector': 'tr:hover', 'props': 'background-color: fuchsia; font-size: 1.5em;'}])
Результат:
58
В коде, кроме закрашивания строки, при наведении на нее кур-
сора было предусмотрено увеличение размера шрифта этой строки.
Так можно задать изменение размера шрифта при наведении кур-
сора на элемент данных заданной строки:
df.style.set_table_styles({ 'строка_1': [{'selector': 'td:hover', 'props': [('font-size', '3rem')]}] }, axis=1, overwrite=False)
Результат:
Создание границ ячеек таблицы. С помощью Styler можно задать
и отформатировать границы как всей таблицы, так и ее отдельных столбцов, заголовков и/или отдельных ячеек. Для этого используют свойство border и его производные border-left, border-right и т. д. Воз­можно использовать следующие стили границы: None (нет границ), hid-
den (скрытая граница), solid, dotted, inset, outset, dashed, groove, thick double, ridge, medium dashed и др.
Так можно создать датафрейм s и задать разные границы для
названий строк и столбцов, и остальных табличных данных:
import numpy as np import pandas as pd s=pd.DataFrame({'A':np.linspace(1,6,7)}) s=pd.concat([s,pd.DataFrame(np.random.randn(7,4), columns=list('BCDE'))],axis=1) s.style.set_table_styles([{'selector': 'td', 'props': 'border: 2px solid orange'}, {'selector': 'th', 'props': 'border: 2px solid olive'}], overwrite=False, axis=0)
59
Результат:
Так можно задать только внешнюю границу нужных толщины
и цвета:
s.style.set_table_styles([{'selector': '', 'props': 'border: 2px solid orange'}], overwrite=False)
Результат:
Так можно задать границы только в столбце B датафрейма s:
s.style.set_table_styles({ 'B': [{'selector': 'th', 'props': 'border-left: 2px solid red '}, {'selector': 'td', 'props': 'border: 3px solid purple'}] }, overwrite=False, axis=0)
60
Там, где находятся данные столбца В, расставлены все границы
заданного стиля (solid), толщины и цвета. У заголовка столбца B задана только левая граница ячейки (цвет границы – красный, толщина 2px).
Можно задать свой цвет нижней (верхней) границы ячеек:
s.style.set_table_styles([{'selector': '*', 'props': 'border: 1px solid;\ border-bottom: 2px solid red'}], # border-top overwrite=False)
Результат:
В приведенных далее примерах показаны выведенные на экран
датафреймы с разными стилями границ.
Так можно задать два разных стиля границ: в ячейках с данными
задан стиль ridge, для границ заголовков – стиль inset:
import pandas as pd dd = pd.DataFrame({
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]