Визуализация данных в Python. Работа с библиотекой Seaborn
Покупка
Новинка
Тематика:
Системы управления базами данных (СУБД)
Год издания: 2023
Кол-во страниц: 144
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7882-3326-0
Артикул: 844136.01.99
Рассмотрены возможности языка программирования Python в области визуализации данных. Для построения графиков использована библиотека Seaborn. Приведены примеры построения двумерных графиков, гистограмм и диаграмм, а также рассмотрены вопросы форматирования построенных графиков. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы.
Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 18.03.01 «Химическая технология», 28.03.02 «Наноинженерия», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности», изучающих дисциплины «Информатика», «Информационные технологии», «Вычислительная математика», «Программирование», «Компьютерная графика».
Подготовлено на кафедре информатики и прикладной математики.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.02: Информационные системы и технологии
- 18.03.01: Химическая технология
- 28.03.02: Наноинженерия
- 29.03.04: Технология художественной обработки материалов
- 29.03.05: Конструирование изделий легкой промышленности
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации Казанский национальный исследовательский технологический университет А. Н. Титов, Р. Ф. Тазиева ВИЗУАЛИЗАЦИЯ ДАННЫХ В PYTHON РАБОТА C БИБЛИОТЕКОЙ SEABORN Учебно-методическое пособие Казань Издательство КНИТУ 2023
УДК 004.42(075) ББК 32.97я7 Т45 Печатается по решению редакционно-издательского совета Казанского национального исследовательского технологического университета Рецензенты: д-р пед. наук, доц. Ю. В. Торкунова канд. экон. наук, доц. О. С. Семичева Т45 Титов А. Н. Визуализация данных в Python. Работа с библиотекой Seaborn : учебнометодическое пособие / А. Н. Титов, Р. Ф. Тазиева; Минобрнауки России, Казан. нац. исслед. технол. ун-т. – Казань : Изд-во КНИТУ, 2023. – 144 с. ISBN 978-5-7882-3326-0 Рассмотрены возможности языка программирования Python в области визуализации данных. Для построения графиков использована библиотека Seaborn. Приведены примеры построения двумерных графиков, гистограмм и диаграмм, а также рассмотрены вопросы форматирования построенных графиков. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. Предназначено для бакалавров направлений подготовки 09.03.02 «Информационные системы и технологии», 18.03.01 «Химическая технология», 28.03.02 «Наноинженерия», 29.03.04 «Технология художественной обработки материалов», 29.03.05 «Конструирование изделий легкой промышленности», изучающих дисциплины «Информатика», «Информационные технологии», «Вычислительная математика», «Программирование», «Компьютерная графика». Подготовлено на кафедре информатики и прикладной математики. УДК 004.42(075) ББК 32.97я7 ISBN 978-5-7882-3326-0 © Титов А. Н., Тазиева Р. Ф., 2023 © Казанский национальный исследовательский технологический университет, 2023 2
С О Д Е Р Ж А Н И Е ВВЕДЕНИЕ ................................................................................................................... 4 1. ВИЗУАЛИЗАЦИЯ ДАННЫХ ................................................................................... 6 1.1. НАСТРОЙКА ЭЛЕМЕНТОВ ГРАФИКА. ФУНКЦИИ SET(), SET_STYLE(), AXES_STYLE() .... 8 1.2. ЦВЕТОВЫЕ ПАЛИТРЫ ....................................................................................................... 16 2. ВИЗУАЛИЗАЦИЯ СТАТИСТИЧЕСКИХ ОТНОШЕНИЙ ....................................... 22 2.1. ДИАГРАММА РАССЕЯНИЯ. МЕТОД SCATTERPLOT() ....................................................... 22 2.2. МЕТОД LINEPLOT() ........................................................................................................... 36 2.3. МЕТОД REGPLOT () ........................................................................................................... 56 2.4. ФУНКЦИЯ RELPLOT () ....................................................................................................... 57 3. ВИЗУАЛИЗАЦИЯ РАСПРЕДЕЛЕНИЯ ДАННЫХ ................................................. 60 3.1. ПОСТРОЕНИЕ ОДНОМЕРНЫХ ГИСТОГРАММ. ФУНКЦИЯ HISTPLOT() .......................... 60 3.2. ФУНКЦИЯ KDEPLOT() ....................................................................................................... 65 3.3. ФУНКЦИЯ ECDFPLOT() ..................................................................................................... 68 3.4. ФУНКЦИЯ RUGPLOT() ....................................................................................................... 70 3.5. ФУНКЦИЯ DISPLOT()......................................................................................................... 72 4. ВИЗУАЛИЗАЦИЯ КАТЕГОРИАЛЬНЫХ ДАННЫХ .............................................. 76 4.1. ФУНКЦИЯ STRIPPLOT() .................................................................................................... 76 4.2. ФУНКЦИЯ SWARMPLOT() ................................................................................................. 80 4.3. ФУНКЦИЯ BOXPLOT() ....................................................................................................... 82 4.4. ФУНКЦИЯ VIOLINPLOT() .................................................................................................. 86 4.5. ФУНКЦИЯ BOXENPLOT() .................................................................................................. 90 4.6. ФУНКЦИЯ BARPLOT() ....................................................................................................... 94 4.7. ФУНКЦИЯ POINTPLOT() ................................................................................................. 100 4.8. ФУНКЦИЯ COUNTPLOT() ................................................................................................ 103 4.9. ФУНКЦИЯ CATPLOT() ..................................................................................................... 105 5. ВИЗУАЛИЗАЦИЯ РЕГРЕССИОННЫХ МОДЕЛЕЙ ............................................. 109 5.1. ФУНКЦИЯ LMPLOT() ....................................................................................................... 109 5.2. ФУНКЦИЯ REGPLOT() ..................................................................................................... 114 6. МАТРИЧНЫЕ ГРАФИКИ. ФУНКЦИЯ HEATMAP ............................................. 116 7. СЕТОЧНЫЕ ГРАФИКИ ....................................................................................... 130 7.1. ФУНКЦИЯ PAIRPLOT() .................................................................................................... 130 7.2. ФУНКЦИЯ JOINTPLOT() .................................................................................................. 134 ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ................................................. 139 ЛИТЕРАТУРА .......................................................................................................... 144 3
В В Е Д Е Н И Е К числу важнейших операций при работе с данными относится их визуализация, составляющая значительную часть работы специалистов в области науки о данных. Визуализация данных – это графическое представление информации и аналитики, которое обеспечивает наиболее эффективную работу человека по их изучению. Одной из лучших библиотек для визуализации данных на Python и выделения их статистических особенностей является библиотека Seaborn. Основой библиотеки Seaborn является библиотека Matplotlib, но Seaborn предлагает интерфейс более высокого уровня, а это значит, что для формирования внешнего вида графиков требуется, как правило, одна-две строчки кода, а при необходимости подготовить график для презентации или публикации Seaborn также предоставляет доступ и к низкоуровневым настройкам. Seaborn – это библиотека для создания статистической графики на Python. Библиотека построена поверх базовой библиотеки визуализации Python – Matplotlib и тесно интегрируется со структурами данных Pandas. Seaborn – это расширение Matplotlib с дополнительными возможностями. Seaborn предоставляет множество шаблонов визуализации с меньшим количеством синтаксических правил, чем в Matplotlib, причем более простых, и строит графики с более красивым дизайном. Библиотека удобна при работе с DataFrames, наиболее широко используемой структурой данных для анализа данных. Ее функции построения графиков работают с датасетами и выполняют все необходимые преобразования для создания информативных графиков. Seaborn имеет встроенные темы для оформления графики. В ней при желании можно установить параметры контекста, стиль осей, цветовую гамму и многое другое, хотя это вовсе не обязательно. При этом не возникает необходимости использовать объект Figure и экземпляры классов Axes, как это делается в библиотеке Matplotlib, или что-нибудь настраивать. В данном пособии авторы поставили перед собой цель: собрать имеющуюся в литературе информацию по работе с Seaborn, переработать ее с учетом тех типов задач, которые решаются в преподаваемых авторами дисциплинах – информатике, информационных технологиях, программировании и обработке данных. Авторы надеются облегчить восприятие изложенного материала, снабдив пособие большим количеством примеров и пояснений к ним. 4
Пособие включает в себя семь глав. В первой главе рассмотрены способы визуализации данных в Seaborn и показано, как можно настроить эстетические параметры графика. Во второй главе показано, как с помощью функций библиотеки можно осуществить визуализацию статистических отношений. В третьей главе приведены примеры построения гистограмм и функций плотности распределения исходных данных. В четвертой главе рассмотрены вопросы визуализации данных, когда одна из переменных является категориальной (разделенной на дискретные группы). В пятой главе приведены примеры построения регрессионных моделей с помощью функций lmplot() и regplot(). В шестой главе показано, как в Seaborn можно визуализировать двумерную таблицу с числовыми данными. В седьмой главе приведены функции, которые позволяют строить несколько графиков (областей Axes) на одной картинке (области Figure). Материал, изложенный в пособии, может быть использован при проведении лабораторных занятий по информатике, информационным технологиям, обработке экспериментальных данных, вычислительной и прикладной математике. Используемая в пособии версия Python – 3.10.2. Вся работа по построению приведенных в пособии графиков была проведена в Google Colab и Jupyter Notebook. 5
. В И З У А Л И З А Ц И Я Д А Н Н Ы Х Важной частью работы специалистов в области Data Science является визуализация данных. Визуализация может использоваться на всех этапах процесса обработки данных. На ранних стадиях развития проекта часто необходимо выполнять первоначальный анализ данных (Exploratory data analysis – EDA) для выявления имеющихся закономерностей. Визуализация присутствует на этапах первичной и промежуточной обработки данных. Особенно она важна на этапе окончания проекта, так как необходимо суметь представить результаты его реализации в понятном даже для непрофессионалов виде. Для того чтобы визуализация была успешной, необходимо соблюдать ряд принципов: 1. Не существует универсально лучшего способа визуализации данных. Перед выбором способа визуализации необходимо понять, что именно мы хотим показать. В зависимости от цели данные нужно расположить в том логическом порядке, который нам требуется: от большего к меньшему или наоборот. 2. Далее нужно выбрать подходящий тип визуализации данных, который упростит восприятие информации. При сравнении желательно использовать графики одного типа. Пользователь запутается, если до обработки данные представлены в виде линейной диаграммы, а после нее – в виде столбчатой. 3. Лучше подписывать данные непосредственно на графике – так мозг воспринимает картину целиком и быстрее делает выводы. 4. При визуализации рекомендуется использовать минимум элементов, убрать лишнюю информацию, логотипы, даты, визуальный шум. Чем проще график, тем быстрее информация доходит до мозга. 5. Лучше использовать лаконичный дизайн. 3D-эффекты отвлекают внимание от информации и не решают задачи. 6. Одна задача – один график. Всегда старайтесь помнить, что несколько простых графиков обычно более эффективны, чем один сложный график. 7. Особое внимание нужно обратить на цвета на графике. Общепринятые цвета: «правильно» выделяется зеленым, а «неправильно» – красным. В разных странах общепринятые цвета различаются. Лучше придерживаться единой цветовой гаммы. Если один график в сером 6
цвете, то другой, в ярких оттенках, перетянет на себя внимание и покажется более значимым. Среди основных типов визуализации данных выделяют графики, диаграммы, карты, дашборды. Точечная диаграмма (диаграмма рассеяния – scatterplot) представляет собой тип графика, изображающий значения двух количественных переменных в виде точек на плоскости и используется для определения типа их взаимосвязи (если таковая имеется). Другим простым способом визуализации данных является представление информации в виде графиков (Line Chart). График лучше всего использовать, когда имеется зависимость одной переменной от другой. Точки на графике (маркеры) используются, чтобы отобразить имеющуюся информацию, а кривая, соединяющая их, показывает эти изменения. В частности, построив график, можно сделать предположение о том, существует ли корреляция между данными диаграммы. Графики подходят, например, для представления информации о колебании курса акций, темпов роста компании. Гистограммы (Histograms) полезны для представления распределения данных. Используя гистограммы, можно выдвинуть предположение о виде распределения, а также можно определить, имеются ли выбросы. В столбчатой диаграмме (Column Chart) в отличие от гистограммы есть расстояния между столбцами, столбцы можно менять местами без потери смысла. Она больше подходит для сравнения категориальных данных. Круговая диаграмма (Pie Chart) подходит для демонстрации частей целого. Тепловая карта (Heatmap) – это матричный способ представления многомерных данных в цветовой гамме. Python обладает большим набором библиотек для наглядного представления данных: Matplotlib, Seaborn, Pandas, Plotly, Bokeh, Folium – и это далеко не полный перечень графических библиотек. В данном пособии мы остановимся на визуализации данных в библиотеке Seaborn с привлечением в случае необходимости библиотеки Matplotlib, являющейся ее основой. Библиотека Seaborn позволяет легко строить графики различных типов с помощью встроенных методов, переключаться между различными визуальными представлениями с помощью согласованного API, ориентированного на наборы данных. Элементы Seaborn делятся на два уровня абстракции: оси и диаграммы. 7
Первые имитируют Matplotlib и с помощью параметра ax могут создавать поддиаграммы. Например, функции scatterplot() и lineplot() могут создать только один график на уровне области Axes Matplotlib, принимая любые последовательности данных: списки, кортежи, массивы NumPy и серии Pandas. Они возвращают объект Axes и могут использовать функции библиотеки Matplotlib для форматирования графиков. Более абстрактные функции, например relplot(), используются для создания многосегментных графиков, принимая данные только в виде объектов DataFrame. Они возвращают объекты FaceGrid, PairGrid или JoinGrid и используют разные стили и кастомизацию входных данных. 1.1. Настройка элементов графика. Функции set(), set_style(), axes_style() Визуализация – это искусство представления данных эффективным и простым способом. В библиотеке Matplotlib можно строить очень красивые графики, однако в силу своей низкоуровневости для этого в ней нужно настраивать множество параметров функций. В отличие от Matplotlib, Seaborn поставляется с настроенными темами и высокоуровневым интерфейсом для настройки и управления внешним видом фигур Matplotlib. Работать с модулем Seaborn можно в различных средах разработки языка программирования Python. Если предполагается работа в Google Colab, то устанавливать библиотеку не требуется, нужно только ее импортировать: import seaborn as sns. Seaborn наряду с другими библиотеками входит в дистрибутив Anaconda. Если в среде разработки библиотека Seaborn отсутствует, установить ее можно с помощью менеджера пакетов pip с помощью команды pip install seaborn. При работе с Seaborn, скорее всего, понадобятся еще несколько библиотек: Matplotlib, NumPy, Scipy и Pandas. Библиотека Seaborn обладает самыми широкими возможностями представления данных DataFrame из рассмотренных библиотек. В ней при желании можно установить параметры контекста, стиль осей, цветовую гамму и многое другое. Покажем, как это можно сделать. 8
Для установки эстетических параметров графиков в Seaborn используют функцию set() со следующим синтаксисом: sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1, color_codes=False, rc=None) Параметры функции: сontext – параметры контекста, влияющие на размер меток, линий и других элементов, но не на общий стиль. Переменная может принимать значения: notebook, paper, talk, poster; style – стиль осей: darkgrid (серый фон с сеткой), whitegrid (белый фон с сеткой), dark (серый фон без сетки), white (белый фон без сетки), ticks (белый фон с засечками по осям); palette – цветовая палитра: deep, muted, bright, pastel, dark, colorblind, а также палитры из библиотеки Matplotlib; font – шрифт текста; font_scale – масштабирование размера текста. Вид графиков с использованием различных стилей можно посмотреть, запустив код import seaborn as sns import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(15, 12)) style=['darkgrid', 'whitegrid', 'dark', 'white', 'ticks'] x=np.linspace(-5,5,100) y=np.sinc(x) for i, style in enumerate(style): sns.set(style=style) # Устанавливаем стиль # строим график в соответствующем подокне if i==len(style)-1: plt.subplot(3, 1, 3) else: plt.subplot(3, 2, i+1) plt.plot(x,y) plt.title(style) Результат работы программы представлен на рис. 1.1. 9
Рис. 1.1. Графики, построенные с использованием разных стилей Темный фон больше подходит для легких элементов, таких как точки и линии. Для более тяжелых фигур лучше подходит светлый фон. Если цель графика не состоит в получении количественной информации, то можно воспользоваться светлой и темной темами без числовых сеток. Аналогично можно просмотреть, как будут выглядеть графики с другими эстетическими параметрами (context, palette): import seaborn as sns import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(15, 12)) сontext =['notebook', 'paper', 'talk', 'poster'] x=np.linspace(-5,5,100);y=np.sinc(x) for i, сontext in enumerate(сontext): sns.set(сontext) # Устанавливаем параметр контекста # строим график в соответствующем подокне plt.subplot(2, 2, i+1) plt.plot(x,y) plt.title(сontext,x=0.8,y=0.8) 10