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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
31
'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'inferno', 'inferno_r', 'jet', 'jet_r', 'magma', 'magma_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 'rainbow', 'rainbow_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 'winter', 'winter_r'.
Для стилизации текста используют аналогичный метод text_gra-
dient. Синтаксис метода:
Styler.text_gradient(cmap='PuBu', low=0, high=0, axis=0,
subset=None, vmin=None, vmax=None, gmap=None)
Параметры метода аналогичны параметрам метода back-
ground_gradient.
Пример. Изменим цвет данных в созданном датафрейме df с по-
мощью кода:
import pandas as pd import numpy as np df=pd.DataFrame(np.random.randn(4,4), columns= list('BCDE')) df.style.text_gradient(axis=0, cmap='gist_rainbow')
Результат:
2 . 4 . М е т о д b a r
С помощью метода bar можно построить гистограмму внутри
блока ячеек. Синтаксис метода:
Styler.bar(subset=None, axis=0, *, color=None, cmap=None, width=100, height=100, align='mid', vmin=None, vmax=None, props='width: 10em;')
32
Параметры метода:
subset – метка, объект array-like или IndexSlice. Необязательный па-
раметр, предназначенный для выбора определенных строк и столбцов;
axis – ось. Указывает область применения: к каждому столбцу
(axis=0 или 'index'), к каждой строке (axis=1 или 'columns'), ко всему DataFrame сразу (axis=None);
color – строка или кортеж/список из двух значений. Если значе-
нием является строка, цвет будет одинаковым для отображения как отри­цательных, так и положительных чисел. Если используется кортеж или список из двух значений, первым элементом задается цвет для отрица­тельных чисел (color_negative), а вторым – цвет для положительных (color_positive), например: ['#d65f5f', '#5fba7d'] или ('#d65f5f', '#5fba7d').
Построим гистограмму в ячейках датафрейма df со значением па-
раметров метода bar по умолчанию, использовав код:
import pandas as pd df = pd.DataFrame({'A': [1, 2, -3, 4], 'B': [3, 4, 5, 6]}) df.style.bar()
Результат:
Гистограммы были построены в ячейках всех столбцов. Для по-
строения использован цвет по умолчанию.
Построим гистограмму только в одном столбце, задав одинако-
вый цвет как для положительных, так и для отрицательных значений. Цвет зададим с помощью цветовой модели OKLCH. Код:
df.style.bar(subset=['A'], color='oklch(80% .2 100)') Результат выполнения кода:
33
Изменим третью строку программы: df.style.bar(subset=['A'],
color=('#ABC', 'rgb(10%,70%,50%)')). В результате выполнения кода по-
лучили гистограмму с разными цветами для положительных и отрица­тельных значений:
cmap – строковое имя цветовой карты Matplotlib или объект
Colormap. Не используется совместно с color;
width, height – параметры, задающие ширину и высоту области
ячейки (в процентах от 0 до 100 %) для построения гистограммы. Например, используем по высоте лишь 60 % возможного пространства ячейки:
df.style.bar(subset=['A'], cmap='rainbow',width=100, height=60) Результат:
align – строка, целое число или число типа float. Параметр, зада-
ющий выравнивание столбцов гистограммы внутри ячеек относительно центра. Если значением параметра является строка, то она может при­нимать одно из следующих значений: 'left', 'right', 'zero', 'mid', 'mean'.'left' – столбцы рисуются начиная с левой границы ячеек от ми­нимального значения данных (началом отсчета считается минимальное значение). Высота столбцов вычисляется следующим образом: ко всем значениям прибавляется модуль наименьшего отрицательного значе­ния в случае, если в столбце есть отрицательные числа, либо от всех значений столбца вычитается минимальное значение, если в столбце нет отрицательных чисел. 'right' – столбцы рисуются начиная с правой границы от максимального значения данных. За начало отсчета берется
34
максимальное значение столбца. 'zero' – нулевое значение находится в центре ячейки. 'mid' – значение (макс-мин)/2 расположено в центре ячейки, или, если все значения отрицательные (положительные), ноль выравнивается по правой (левой) части ячейки. 'mean' – среднее значе­ние данных находится в центре ячейки. Если значением является число, то оно устанавливает центр ячейки. Значение по умолчанию 'mid'.
Выведем на экран датафрейм df со значениями параметра align,
равными left, right, zero, mid, mean и 2.3.
Значение параметра равно left, и в столбце есть отрицательные
числа. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, -3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], color='oklch(80% .2 100)', align='left')
Результат:
Значение параметра равно left, и в столбце нет отрицательных чи-
сел. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], color='oklch(80% .2 100)', align='left')
Результат:
Значение параметра равно left, и в столбце есть отрицательные
числа. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, -3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], color='oklch(80% .2 100)', align='right')
35
Результат:
Значение параметра равно right, и в столбце нет отрицательных
чисел. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], color='oklch(80% .2 100)', align='right')
Результат:
Значение параметра равно zero. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, -3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], cmap='rainbow', align='zero')
Результат:
Высота прямоугольников совпадает с абсолютными значениями
столбца А. Отрицательные значения отложены слева, положительные – справа.
Значение параметра равно mid. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], cmap='rainbow',align='mid')
36
Результат:
Значение параметра равно mean. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], cmap='rainbow',align='mean')
Среднее значение столбца С равно 2.5. Оно является центром
столбца:
Значение параметра равно 2.3. Код программы:
import pandas as pd df = pd.DataFrame({'A': [1, 2, -3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], cmap='rainbow', align=2.3)
Результат работы кода:
Число 2.3 – начало отсчета. Высота прямоугольников (1, 2, -3, 4)
была уменьшена на это значение. Высота первого прямоугольника равна |1-2,3|= |-1,3|, второго – |2-2,3|= |-0,3| и т. д.;
vmin, vmax – минимальное (максимальное) значение столбца,
определяющее левую (правую) границу диапазона прорисовки столбца. Значения, меньшие (большие) этих значений, обрезаются до vmin
37
(vmax). При отсутствии параметра (или при значениях None) будет ис- пользоваться минимальное (максимальное) значения данных.
Пример на применение параметров vmin, vmax: import pandas as pd; import numpy as np
df = pd.DataFrame({'A': [7, 2, -3, 5], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], cmap='coolwarm',vmin=-2, vmax=5)
Результат:
Значение -3 обрезано до -2, значение 7 – до 5; props – строка. Параметр, задающий ширину ячейки при постро-
ении гистограммы. Значение по умолчанию 10em.
Единицы измерений px, em, rem, % и др. используют как для зада-
ния размера шрифта, так и для задания любых свойств, в которых можно задать размеры: width, height (например, при задании размеров графиче­ского окна), padding, margin, border-width (размер границы рамки ячейки таблицы) и т. д. Размеры бывают абсолютные и относительные. Пример абсолютных размеров – mm (мм), Q (четверть миллиметра), cm (см), in (дюймы, 1in=96px=2.54cm), px (CSS-пиксель, 1px=1/96in), pt (пункты, ти­пографские пункты, 1pt=1/72in), pc (пики, типографские пики, 1pc=12pt). Можно указывать дробные значения, например 1.4px.
К числу относительных единиц относятся, например, такие еди-
ницы, как em и rem. Единица измерения em устанавливает значения от- носительно размера шрифта. Например, если размер шрифта равен 16px (font-size: 16px), то 2em эквивалентно 32px. При задании размера в em он считается относительно размера шрифта родительского блока. Еди­ница измерения rem задает размер относительно размера шрифта эле­мента HTML. По умолчанию размер шрифта для HTML равен 16px.
С помощью пикселей задают ширину и высоту элементов (width:
200px, height: 100px), отступы и поля (margin: 10px, padding: 20px), раз­мер шрифта (font-size: 16px). С помощью rem и em задают размер шрифта (font-size: 1.5rem, font-size: 1.2em), отступы у полей с учетом размера шрифта (margin: 0.5rem, padding: 0.8em).
Пример. Установить ширину ячейки столбца А в 20em, а высоту
ячейки – равной 4em. Применить к столбцу А метод .bar.
38
Решение: import pandas as pd
import numpy as np df = pd.DataFrame({'A': [1, 2, -3, 4], 'B': [3, 4, 5, 6]}) df.style.bar(subset=['A'], cmap='rainbow',props = 'width:\ 20em; height: 4em;')
Результат:
Изменить размеры ячейки можно с помощью свойства padding:
df.style.bar(cmap='rainbow',props = 'padding: 20px 90px;') Результат:
2 . 5 . М е т о д ы h i g h l i g h t _ m a x и h i g h l i g h t _ m i n
Существует два удобных метода для выделения данных таблицы:
highlight_max и highlight_min. С их помощью можно выделить ячейки, содержащие значения максимальных или минимальных элементов как всей таблицы, так и каждой строки или столбца. Синтаксис методов:
Styler.highlight_max(subset=None, color='yellow', axis=0, props=None)
и
Styler.highlight_min(subset=None, color='yellow', axis=0, props=None)
39
К рассмотренным в методе highlight_null параметрам добавился
еще один – axis, позволяющий найти максимальное или минимальное значения в строке (axis=1 или 'columns'), столбце (axis=0 или 'index') или во всей таблице (axis=None).
Пример. Создать датафрейм, в котором найти и выделить цветом
ячейки, содержащие минимальные и максимальные элементы каждого столбца.
Решение: import pandas as pd; import numpy as np df=pd.DataFrame({'A':np.linspace(2,10000,4)}) df=pd.concat([df,pd.DataFrame(np.random.randn(4,4), columns= list('BCDE'))], axis=1) df.style.highlight_max(axis=0,color='rgb(0 180 240 / .8)')\ .highlight_min(axis=0, color='lch(53% 90 160)')
Результат:
Сменив ось, можно закрасить разным цветом минимальные
и максимальные элементы каждой строки:
df.style.highlight_max(axis=1,color='orange')\ .highlight_min(axis=1, color='aqua')
Результат:
Так можно найти минимальные значения в нескольких строках,
например в 1 и 3:
df.style.highlight_min(subset=([1,3],), color='lime', axis=1)
40
Результат:
Найти минимальные элементы двух столбцов можно так:
df.style.highlight_min(subset=["B", "D"], color='lime')
Результат:
Установив значение параметра axis на None, можно выделить ми-
нимальные и максимальные элементы среди всех данных таблицы:
df.style.highlight_max(axis=None,color='orange').highlight_min
(axis=None, color='aqua')
Результат:
2 . 6 . М е т о д h i g h l i g h t _ b e t w e e n
Метод highlight_between предназначен для выделения ячеек таб-
лицы, значения которых лежат внутри определенного диапазона. Син­таксис метода:
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]