Файл для практики.
order_id,category,country,amount
1,Ноутбуки,Армения,1200
2,Телефоны,Грузия,800
3,Ноутбуки,Армения,1500
4,Мониторы,Германия,700
5,Телефоны,Армения,950
6,Планшеты,Франция,600
7,Телефоны,Грузия,1100
8,Мониторы,Армения,650
9,Ноутбуки,Германия,1700
10,Планшеты,Франция,550
11,Телефоны,Армения,1200
12,Мониторы,Грузия,800
13,Ноутбуки,Армения,1400
14,Телефоны,Германия,1000
15,Планшеты,Армения,500
На прошлом уроке мы познакомились с основными типами данных и выяснили, что выбор графика напрямую зависит от того, какую информацию мы хотим показать. Теперь пришло время перейти к первому большому классу визуализаций — графикам для категориальных признаков.
Представьте, что вы работаете аналитиком интернет-магазина. Руководитель просит ответить на несколько вопросов: какая категория товаров продается лучше всего, из каких городов приходит больше заказов, какие способы доставки выбирают клиенты чаще остальных. Все эти задачи связаны не с числами как таковыми, а с категориями.
Конечно, можно вывести таблицу и посмотреть значения вручную. Но гораздо удобнее построить график и сразу увидеть лидеров, отстающих и общую картину.
В этом уроке мы научимся визуализировать категориальные данные с помощью библиотеки Matplotlib. Разберем столбчатые и круговые диаграммы, научимся оформлять подписи и легенды, а также обсудим ошибки, которые чаще всего допускают начинающие аналитики.
Что вы узнаете в рамках статьи
- Что такое графики для категориальных данных.
- Когда использовать столбчатые диаграммы.
- Как строить вертикальные и горизонтальные столбцы.
- Когда уместно применять круговые диаграммы.
- Как добавлять подписи и легенды.
- Как выбирать цвета для категорий.
- Какие ошибки чаще всего встречаются при визуализации категориальных данных.
Ключевые термины
- Столбчатая диаграмма — график, который сравнивает значения между категориями с помощью столбцов.
- Горизонтальная столбчатая диаграмма — разновидность столбчатой диаграммы с горизонтальными столбцами.
- Круговая диаграмма — график, показывающий долю каждой категории в общем объеме.
- Легенда — блок, объясняющий обозначения на графике.
- Подпись категории — текстовое название категории на оси графика.
- Matplotlib — библиотека Python для создания визуализаций.
Что такое категориальные данные
Категориальные данные описывают принадлежность объекта к определенной группе.
Например:
Ноутбук
Телефон
Планшет
Монитор
Или:
Ереван
Тбилиси
Берлин
Прага
Или:
Новый
Оплачен
Отправлен
Доставлен
Во всех этих случаях нас интересует сравнение категорий между собой. Мы не анализируем распределение чисел и не ищем математические зависимости. Мы хотим понять, какая категория встречается чаще, какая приносит больше продаж или какая занимает большую долю рынка. Для таких задач лучше всего подходят столбчатые и круговые диаграммы.
Столбчатые диаграммы
Столбчатая диаграмма является одним из самых популярных графиков в аналитике. Она позволяет быстро сравнивать несколько категорий между собой.
Предположим, у нас есть данные о продажах различных категорий товаров:
categories = ["Ноутбуки", "Телефоны", "Планшеты", "Мониторы"]
sales = [120, 180, 75, 95]
Построим график:
import matplotlib.pyplot as plt
categories = ["Ноутбуки", "Телефоны", "Планшеты", "Мониторы"]
sales = [120, 180, 75, 95]
plt.bar(categories, sales)
plt.show()
Функция bar() строит вертикальные столбцы. Высота каждого столбца соответствует значению категории. По одному взгляду на график становится понятно, что телефоны продаются лучше остальных товаров. Это намного удобнее, чем сравнивать числа вручную.
Когда использовать bar()
Вертикальная столбчатая диаграмма хорошо подходит, когда категорий немного и их названия короткие. Например, с помощью такого графика удобно сравнивать продажи по категориям товаров, количество клиентов по странам, число заказов по городам или количество пользователей на различных тарифах. Именно такие графики чаще всего встречаются в бизнес-аналитике.
Добавляем подписи осей
График без подписей может быть непонятным.
Рассмотрим улучшенный вариант:
import matplotlib.pyplot as plt
categories = ["Ноутбуки", "Телефоны", "Планшеты", "Мониторы"]
sales = [120, 180, 75, 95]
plt.bar(categories, sales)
plt.title("Продажи по категориям")
plt.xlabel("Категория")
plt.ylabel("Количество продаж")
plt.show()
Теперь любой человек сможет понять смысл графика без дополнительных пояснений.
Горизонтальные столбчатые диаграммы
Иногда названия категорий становятся слишком длинными.
Например:
[
"Бытовая техника",
"Компьютерные комплектующие",
"Смартфоны и аксессуары",
"Игровые приставки"
]
В такой ситуации вертикальные подписи начинают накладываться друг на друга. Для решения проблемы используется функция barh(). Она строит горизонтальные столбцы.
import matplotlib.pyplot as plt
categories = [
"Бытовая техника",
"Компьютерные комплектующие",
"Смартфоны и аксессуары",
"Игровые приставки"
]
sales = [120, 80, 200, 60]
plt.barh(categories, sales)
plt.title("Продажи по категориям")
plt.show()
Такой график значительно легче читать. Поэтому если названия категорий длинные, аналитики часто выбирают именно горизонтальный вариант.
Настройка цветов
По умолчанию Matplotlib использует стандартный цвет оформления. Однако иногда полезно выделить категории разными цветами.
Например:
import matplotlib.pyplot as plt
categories = ["Ноутбуки", "Телефоны", "Планшеты", "Мониторы"]
sales = [120, 180, 75, 95]
colors = ["red", "blue", "green", "orange"]
plt.bar(categories, sales, color=colors)
plt.show()
Цвета позволяют сделать график более наглядным. Но важно помнить о чувстве меры. Слишком большое количество ярких цветов ухудшает восприятие информации. Обычно лучше использовать спокойную палитру и выделять цветом только действительно важные категории.
Круговые диаграммы
Иногда нас интересует не сравнение абсолютных значений, а доля каждой категории в общем объеме. Для таких случаев используются круговые диаграммы.
Представим, что магазин получает заказы из четырех стран:
countries = ["Армения", "Грузия", "Германия", "Франция"]
orders = [45, 25, 20, 10]
Построим круговую диаграмму:
import matplotlib.pyplot as plt
countries = ["Армения", "Грузия", "Германия", "Франция"]
orders = [45, 25, 20, 10]
plt.pie(orders, labels=countries)
plt.show()
Теперь каждая категория отображается в виде сектора круга. Размер сектора показывает долю категории. Чем больше сектор, тем больше вклад категории в общий результат.
Отображение процентов
На практике круговые диаграммы почти всегда показывают проценты. Для этого используется параметр autopct.
import matplotlib.pyplot as plt
countries = ["Армения", "Грузия", "Германия", "Франция"]
orders = [45, 25, 20, 10]
plt.pie(
orders,
labels=countries,
autopct="%1.1f%%"
)
plt.show()
Теперь рядом с каждым сектором отображается процент. Это делает график гораздо более информативным.
Когда использовать pie()
Круговые диаграммы хорошо работают только тогда, когда категорий немного. Обычно рекомендуется использовать не более пяти-шести категорий. Если категорий становится много, график теряет читаемость. В таких случаях лучше использовать обычную столбчатую диаграмму.
Легенды
Иногда категории отображаются через цвета. Тогда полезно добавить легенду.
Пример:
import matplotlib.pyplot as plt
labels = ["Ноутбуки", "Телефоны", "Планшеты"]
values = [120, 180, 90]
plt.pie(values)
plt.legend(labels)
plt.show()
Легенда помогает зрителю быстро понять, что означает каждый цвет.
Какой график выбрать
На практике выбор часто сводится к простому правилу. Если нужно сравнить категории между собой — используйте столбчатую диаграмму.
- Если нужно показать долю каждой категории в общем результате — можно использовать круговую диаграмму.
- Если категорий много или названия длинные — стоит рассмотреть горизонтальные столбцы.
Главная цель любого графика — сделать информацию понятнее, а не красивее. Поэтому при выборе визуализации всегда думайте о том, насколько легко зритель сможет прочитать данные.
Наиболее частые ошибки
- Использование круговой диаграммы для большого количества категорий
График становится нечитаемым. - Отсутствие подписей осей и заголовка
Зрителю сложно понять смысл графика. - Слишком много цветов
Внимание рассеивается и информация воспринимается хуже. - Использование круговой диаграммы вместо столбчатой при сравнении значений
Сравнивать длину столбцов проще, чем размеры секторов. - Длинные подписи на вертикальной диаграмме
Лучше использоватьbarh().
Наиболее частые вопросы
- Что лучше: bar() или pie()?
В большинстве случаев bar() более информативен и удобен для сравнения категорий. - Когда использовать barh()?
Когда названия категорий длинные или категорий много. - Можно ли задавать свои цвета?
Да, через параметрcolor. - Обязательно ли добавлять заголовок?
Не обязательно, но это считается хорошей практикой. - Сколько категорий допустимо показывать на круговой диаграмме?
Обычно не более пяти-шести.
Итоги
В этом уроке вы познакомились с основными способами визуализации категориальных данных в Matplotlib. Мы научились строить вертикальные и горизонтальные столбчатые диаграммы, создавать круговые диаграммы, добавлять подписи, настраивать цвета и использовать легенды.
Теперь вы умеете выбирать подходящий график для сравнения категорий и отображения долей. В следующем уроке мы перейдем к числовым данным и научимся исследовать распределения с помощью гистограмм.