В этом курсе мы разберем библиотеки языка Python для визуализации данных. Это инструментарий аналитика, который позволяет:
- Смотреть на данные за длительный период в емкой форме
- Обнаруживать зависимости и тренды в данных
- Находить ошибки в данных и нехарактерные значения
- Исследовать статистические характеристики данных
- Строить различные гипотезы о данных перед их дальнейшим аналитическим подтверждением
После обучения вы сможете анализировать ваши данные с использованием популярных библиотек:
- Matplotlib
- Seaborn
- Plotly
В этом уроке мы разберем, по каким причинам аналитики используют указанные библиотеки, и как выглядит типичный порядок работы с ними.
Визуализация в анализе данных
Когда мы передаем информацию третьим лицам, нам часто не хватает места и времени для ее демонстрации. В таких случаях мы подаем информацию в графическом виде — например, составляем презентацию с инфографикой для доклада выступления на конференции.
Качественная презентация позволяет:
- Увидеть тренды изменения показателей компаний, рост или убывание прибыли
- Провести сравнительный анализ при переходе от одной стратегии развития бизнеса к другой
- Подчеркнуть зависимость одних показателей от других
Еще с помощью инструментов для визуализации можно посчитать статистические показатели или сделать агрегацию данных — допустим, найти сумму месячной прибыли по дневным показателям. Также эти инструменты позволяют построить графики и диаграммы самих данных или их агрегаций.
Аналитики должны обладать всеми перечисленными навыками. В рамках курса мы подробнее остановимся на последнем — построении графиков и диаграмм. Мы будем визуализировать данные с помощью библиотек языка Python.
Существует множество готовых открытых и коммерческих решений для аналитики. Но Python — это один из самых распространенных языков для решения задач, связанных с анализом данных и машинным обучением. Освоив Python, аналитик получает мощный инструмент, который помогает получать, обрабатывать и анализировать данные.
Библиотеки визуализации и типы графиков
Для визуализации данных на языке Python используют библиотеки:
- Matplotlib
- Seaborn
- Plotly
Matplotlib — это одна из первых библиотек языка Python, разработанная для визуализации данных. У нее гибкая конфигурация свойств и широкий спектр графиков, который покрывает востребованные аналитические задачи. Среди них наиболее популярны:
- Линейные графики
- Столбчатые и круговые диаграммы
- Гистограммы
Все эти графики можно построить с помощью Pyplot, специального модуля для Matplotlib. В коде название модуля Pyplot часто сокращается до plt. Рассмотрим построение каждого из графиков подробнее.
Строим линейные графики
Для начала построим линейный график с помощью метода plot():
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7]
y = [10, 15, 13, 17, 20, 22, 25]
plt.plot(x, y)
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Simple Line Graph")
plt.show()
В итоге мы получим такой график:
Строим столбчатые и круговые диаграммы
Для сравнительного анализа показателей используют столбчатые и круговые диаграммы. Построим круговой график:
# Данные
sizes = [25, 30, 15, 10]
labels = ["Apple", "Banana", "Orange", "Grapes"]
# Создание круговой диаграммы
plt.pie(sizes, labels=labels, autopct="%1.1f%%")
plt.title("Pie Chart")
plt.show()
Изучим получившуюся диаграмму. Весь круг — это общее количество фруктов в магазине. Сектора этого круга показывают отдельно количество яблок, бананов, апельсинов и винограда в процентах:
По этой диаграмме мы можем визуально оценить относительные показатели, даже не зная конкретного количества фруктов.
Строим гистограмму
Чтобы проанализировать распределение величин в данных, используют гистограмму — это график частоты встречаемости значений или частоты попадания значений в определенный числовой интервал.
Перейдем к примеру:
import numpy as np
# Создание случайных данных
data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.title("Histogram")
plt.show()
Здесь мы дополнительно используем библиотеку NumPy для генерации случайной последовательности. В этом курсе мы будем иногда использовать конструкции NumPy, потому что библиотеки по визуализации данных используют ее в своих методах.
В итоге мы получим такую визуализацию:
Здесь каждый столбец — это количество значений, которые попадают в соответствующий интервал, отложенный на горизонтальной оси. В качестве параметра bins мы указали, что хотим взять отрезок со всеми значениями и разбить его на 30 равных частей. Так на рисунке появился 30 столбцов.
Использование Matplotlib осложняется тем, что необходимо понимать ее внутреннее устройство: иерархию объектов и их методы. Чтобы облегчить задачу, поверх Matplotlib мы будем использовать библиотеки Seaborn и Plotly, более простые в использовании.
Строим гистограмму в Seaborn и Plotly
Построение гистограммы в Seaborn выглядит так:
import seaborn as sns
sns.histplot(data=data)
Результат аналогичен построению в Matplotlib:
Код для Plotly тоже достаточно лаконичен:
import plotly.express as px
fig = px.histogram(data)
fig.show()
Библиотека Plotly отличается от других интерактивностью. Например, построенные с ее помощью графические объекты могут изменять масштаб и подсвечивать значения в конкретных точках.
Выводы
Визуализация данных — это один из необходимых инструментов, которым должен владеть аналитик данных. Она позволяет обозревать большие объемы данных, что актуально для современных аналитических задач. В этом уроке мы познакомились с библиотеками языка Python для визуализации данных:
- Matplotlib
- Seaborn
- Plotly
С их помощью построили графики, которые часто используются аналитиками на практике:
- Линейные графики
- Гистограммы
- Столбчатые и круговые диаграммы
Далее мы погрузимся в основные возможности этих библиотек и все нюансы их использования.
Самостоятельная работа
Освойте базовые приемы визуализации из урока. Склонируйте репозиторий с датасетами и возьмите оттуда файлы Shop_orders.csv и Cite_clicks.csv.
Чтение данных
- Импортируйте
pandas,matplotlib.pyplot as plt,seaborn as sns,plotly.express as px. - Загрузите
Shop_orders.csvв датафрейм, убедитесь что столбецWeekday— индекс, а остальные столбцы приведены к числам. - Считайте
Cite_clicks.csv, заполните пропуски и сохраните отдельные серии для каждого магазина. - Выведите
head()иdescribe()по обоим наборам, зафиксируйте диапазоны значений — они пригодятся для настройки осей.
Линейные и круговые диаграммы в Matplotlib
- Постройте линейный график динамики кликов по дням для всех магазинов (
plt.plotс несколькими сериями, легенда черезplt.legend()). - Добавьте подписи осей, заголовок и сетку (
plt.xlabel,plt.ylabel,plt.title,plt.grid) — примеры есть в README. - Для
Shop_orders.csvрассчитайте суммарные продажи за неделю и постройтеplt.bar, затемplt.pie, чтобы сравнить доли магазинов. - Сохраните хотя бы один рисунок через
plt.savefig()и убедитесь, что файл открывается.
Гистограммы и распределения
- На основании
Cite_clicks.csvпостройтеplt.histдля одного магазина и подберите разумное значениеbins. - Повторите гистограмму средствами Seaborn:
sns.histplotилиsns.displotсkde=True, сравните кривые плотности. - Добавьте горизонтальные/вертикальные линии порогов (
plt.axhline/plt.axvline), чтобы отметить аномально низкие/высокие значения. - Сделайте выводы о перекосах распределения прямо в ноутбуке под графиками.
Интерактивные графики Plotly
- Постройте
px.lineпоCite_clicks.csvс несколькими метриками, настройте подписи (labels={...}) и легенду черезupdate_layout. - Добавьте
px.barилиpx.boxдля данных по магазинам, включите отображение точек (points="all"), чтобы увидеть выбросы. - Активируйте стандартные элементы управления (панель в Plotly появляется автоматически), протестируйте zoom/pan/save.
- Экспортируйте один график в HTML (
fig.write_html("clicks.html")) и проверьте интерактивность в браузере.
Контроль / Что проверить
- Использованы оба набора из репозитория, ссылки на исходные файлы указаны в ноутбуке или скрипте.
- Построены все типы графиков из README: линейные, столбчатые/круговые диаграммы, гистограммы, интерактивные Plotly.
- На каждом изображении заданы размеры, подписи осей и заголовки; легенда читаема.
- Сделаны текстовые выводы об обнаруженных особенностях (баланс продаж, выбросы, форма распределения).
- Все команды выполняются без ошибок, сохраненные графики открываются и соответствуют описанным шагам.
Дополнительные материалы
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.