Зарегистрируйтесь, чтобы продолжить обучение

Введение в визуализацию данных Python: Визуализация данных

В этом курсе мы разберем библиотеки языка 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()

В итоге мы получим такой график:

linplot

Строим столбчатые и круговые диаграммы

Для сравнительного анализа показателей используют столбчатые и круговые диаграммы. Построим круговой график:

# Данные
sizes = [25, 30, 15, 10]
labels = ["Apple", "Banana", "Orange", "Grapes"]

# Создание круговой диаграммы
plt.pie(sizes, labels=labels, autopct="%1.1f%%")
plt.title("Pie Chart")
plt.show()

Изучим получившуюся диаграмму. Весь круг — это общее количество фруктов в магазине. Сектора этого круга показывают отдельно количество яблок, бананов, апельсинов и винограда в процентах:

linplot

По этой диаграмме мы можем визуально оценить относительные показатели, даже не зная конкретного количества фруктов.

Строим гистограмму

Чтобы проанализировать распределение величин в данных, используют гистограмму — это график частоты встречаемости значений или частоты попадания значений в определенный числовой интервал.

Перейдем к примеру:

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, потому что библиотеки по визуализации данных используют ее в своих методах.

В итоге мы получим такую визуализацию:

plt_hist

Здесь каждый столбец — это количество значений, которые попадают в соответствующий интервал, отложенный на горизонтальной оси. В качестве параметра bins мы указали, что хотим взять отрезок со всеми значениями и разбить его на 30 равных частей. Так на рисунке появился 30 столбцов.

Использование Matplotlib осложняется тем, что необходимо понимать ее внутреннее устройство: иерархию объектов и их методы. Чтобы облегчить задачу, поверх Matplotlib мы будем использовать библиотеки Seaborn и Plotly, более простые в использовании.

Строим гистограмму в Seaborn и Plotly

Построение гистограммы в Seaborn выглядит так:

import seaborn as sns

sns.histplot(data=data)

Результат аналогичен построению в Matplotlib:

sns_hist

Код для Plotly тоже достаточно лаконичен:

import plotly.express as px

fig = px.histogram(data)
fig.show()

Библиотека Plotly отличается от других интерактивностью. Например, построенные с ее помощью графические объекты могут изменять масштаб и подсвечивать значения в конкретных точках.

Выводы

Визуализация данных — это один из необходимых инструментов, которым должен владеть аналитик данных. Она позволяет обозревать большие объемы данных, что актуально для современных аналитических задач. В этом уроке мы познакомились с библиотеками языка Python для визуализации данных:

  • Matplotlib
  • Seaborn
  • Plotly

С их помощью построили графики, которые часто используются аналитиками на практике:

  • Линейные графики
  • Гистограммы
  • Столбчатые и круговые диаграммы

Далее мы погрузимся в основные возможности этих библиотек и все нюансы их использования.


Самостоятельная работа

Освойте базовые приемы визуализации из урока. Склонируйте репозиторий с датасетами и возьмите оттуда файлы Shop_orders.csv и Cite_clicks.csv.

Чтение данных

  1. Импортируйте pandas, matplotlib.pyplot as plt, seaborn as sns, plotly.express as px.
  2. Загрузите Shop_orders.csv в датафрейм, убедитесь что столбец Weekday — индекс, а остальные столбцы приведены к числам.
  3. Считайте Cite_clicks.csv, заполните пропуски и сохраните отдельные серии для каждого магазина.
  4. Выведите head() и describe() по обоим наборам, зафиксируйте диапазоны значений — они пригодятся для настройки осей.

Линейные и круговые диаграммы в Matplotlib

  1. Постройте линейный график динамики кликов по дням для всех магазинов (plt.plot с несколькими сериями, легенда через plt.legend()).
  2. Добавьте подписи осей, заголовок и сетку (plt.xlabel, plt.ylabel, plt.title, plt.grid) — примеры есть в README.
  3. Для Shop_orders.csv рассчитайте суммарные продажи за неделю и постройте plt.bar, затем plt.pie, чтобы сравнить доли магазинов.
  4. Сохраните хотя бы один рисунок через plt.savefig() и убедитесь, что файл открывается.

Гистограммы и распределения

  1. На основании Cite_clicks.csv постройте plt.hist для одного магазина и подберите разумное значение bins.
  2. Повторите гистограмму средствами Seaborn: sns.histplot или sns.displot с kde=True, сравните кривые плотности.
  3. Добавьте горизонтальные/вертикальные линии порогов (plt.axhline/plt.axvline), чтобы отметить аномально низкие/высокие значения.
  4. Сделайте выводы о перекосах распределения прямо в ноутбуке под графиками.

Интерактивные графики Plotly

  1. Постройте px.line по Cite_clicks.csv с несколькими метриками, настройте подписи (labels={...}) и легенду через update_layout.
  2. Добавьте px.bar или px.box для данных по магазинам, включите отображение точек (points="all"), чтобы увидеть выбросы.
  3. Активируйте стандартные элементы управления (панель в Plotly появляется автоматически), протестируйте zoom/pan/save.
  4. Экспортируйте один график в HTML (fig.write_html("clicks.html")) и проверьте интерактивность в браузере.

Контроль / Что проверить

  • Использованы оба набора из репозитория, ссылки на исходные файлы указаны в ноутбуке или скрипте.
  • Построены все типы графиков из README: линейные, столбчатые/круговые диаграммы, гистограммы, интерактивные Plotly.
  • На каждом изображении заданы размеры, подписи осей и заголовки; легенда читаема.
  • Сделаны текстовые выводы об обнаруженных особенностях (баланс продаж, выбросы, форма распределения).
  • Все команды выполняются без ошибок, сохраненные графики открываются и соответствуют описанным шагам.

Дополнительные материалы

  1. Matplotlib — официальное введение
  2. Seaborn Tutorial (official docs)
  3. Plotly Express — getting started

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff