Bemind
Учебник Python
Учебник Python
  • Python
    • Python Lists
      • Списковые включения в Python (Полное руководство с примерами)
      • Исправление ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Как добавить строку в список в Python
      • Разница между массивами и списками в Python
      • Python: Различия между списками и кортежами
      • Как проверить, пуст ли список в Python
      • Как Итерировать (Циклически Проходить) По Списку в Python
      • Python List sort(): Подробное руководство по сортировке списков
      • Python List Extend: Как добавить несколько элементов в список
      • Python: Найти Индекс Всех Вхождений Элемента в Списке
      • Конвертация списка словарей в Pandas DataFrame
      • Генерация случайных чисел в Python
      • Поиск Индекса в Списке Python: Найти Первое, Последнее или Все Вхождения
      • Добавить в начало списка в Python (Вставить в начало)
      • Найти дубликаты в списке Python
      • Python: Умножение Списков (6 Различных Способов)
      • Python списки: Полный обзор
      • Python: Выбор случайного элемента из списка
      • 4 Способа Очистить Список в Python
      • Объяснение ошибки IndexError в Python: индекс списка выходит за пределы допустимого диапазона
      • Python: Получение индекса максимального элемента в списке
      • Python: Объединение списков – Слияние списков (8 способов)
      • Python: Проверка наличия элемента в списке
      • Python: Проверка наличия элемента в списке
      • Удаление элемента из списка в Python (pop, remove, del, clear)
      • Как перевернуть список в Python (6 способов)
      • Python: Замена элемента в списке (6 различных способов)
      • Python: Удаление дубликатов из списка (7 способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Перемешать Список (Случайное Распределение Элементов Списка в Python)
      • Python: Пересечение двух списков
      • Python: Вычитание двух списков (4 простых способа!)
      • Длина или Размер Списка в Python: 5 Способов Узнать Длину Списка
      • Python: Транспонирование списка списков (5 простых способов!)
      • Python: Разделение списка (Пополам, на части)
      • Python: Комбинации списка (Получить все комбинации списка)
      • Python: Выравнивание списка списков (4 способа)
      • Разница между списками в Python: Нахождение разницы между двумя списками Python
      • Python: Найти среднее значение списка или списка списков
      • Как добавлять элементы в списки в Python – 4 простых способа!
      • Списковые включения в Python (Полное руководство с примерами)
      • 6 способов преобразовать список Python в строку
    • Python Dictionaries
      • Понимание словаря Python (с примерами)
      • Исправляем ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Преобразование JSON в словарь Python
      • Полное руководство по вложенным словарям в Python
      • Копирование словаря в Python: Полное руководство
      • Конвертация списка словарей в Pandas DataFrame
      • Поиск дубликатов в списке Python
      • Полный обзор словарей в Python
      • Python: Добавление пары Ключ:Значение в Словарь
      • Python: Сортировка словаря по значениям
      • Слияние Словарей в Python – Комбинирование Словарей (7 Способов)
      • Python: Удаление Дубликатов из Списка (7 Способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Красивая Печать Словаря (Dictionary) – 4 Способа
      • Python: Проверка пуст ли словарь (5 способов!)
      • Copy of Python: Проверка пуст ли словарь (5 способов!)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Получение Ключа Словаря с Максимальным Значением (4 Способа)
      • Python: Удаление ключа из словаря (4 разных способа)
      • Как красиво вывести JSON-файл в Python (6 методов)
    • Python Strings
      • Python Капитализация Строк: Руководство по Преобразованию слов в Заглавные
      • Python strip: Как обрезать строку в Python
      • Python Обратная Строка: Руководство по Реверсированию Строк
      • Как Удалить Префикс или Суффикс из Строки в Python
      • Преобразование строки в формат заголовка в Python с помощью str.title()
      • Как добавить строку в список в Python
      • Python String startswith: Проверка, начинается ли строка с подстроки
      • Python String endswith: Проверка того, заканчивается ли строка подстрокой
      • Как удалить первый или последний символ из строки в Python
      • Как исправить: SyntaxError в Python - EOL при сканировании строкового литерала
      • Python String Contains: Проверка Наличия Подстроки в Строке
      • Как проверить, пустая ли строка в Python
      • Python Новая Строка и Как Печатать Без Переноса Строки
      • Как Конкатенировать Строки в Python: Полное Руководство
      • Python: Подсчет слов в строке или файле
      • Как создать список алфавита в Python
      • Python: Конкатенация строки и целого числа (Int)
      • Python: Сортировка строки (4 различных способа)
      • Python zfill и rjust: Добавление нулей в строку в Python
      • Python: Целое в Двоичное (Преобразование целого числа в двоичную строку)
      • Python rfind: Нахождение индекса последней подстроки в строке
      • Python SHA256 хеширование алгоритм: объяснение
      • Python: Усечение числа с плавающей точкой (6 различных способов)
      • Выбор между методами Python isdigit(), isnumeric() и isdecimal()
      • Python: Удаление специальных символов из строки
      • Python Приведение Строки к Нижнему Регистру с помощью .lower(), .casefold(), и .islower()
      • Python программа для проверки, является ли строка палиндромом (6 методов)
      • Python: Найдите все перестановки строки (3 легких способа!)
      • Python: Удаление пунктуации из строки (3 разных способа!)
      • Python: Найти индекс (или все индексы) подстроки в строке
      • Python: Удаление символов новой строки из строки
      • Python: Удаление символа из строки (4 способа)
      • Python: Количество вхождений в строке (4 способа!)
    • Встроенные функции Python
      • abs()
      • ascii()
      • aiter()
      • all()
      • any()
      • anext()
      • bin()
      • bool()
      • breakpoint()
      • bytearray()
      • bytes()
      • callable()
      • chr()
      • classmethod()
      • compile()
      • complex()
      • delattr()
      • dict()
      • dir()
      • divmod()
      • enumerate()
      • eval()
      • exec()
      • filter()
      • float()
      • format()
      • frozenset()
      • getattr()
      • globals()
      • hasattr()
      • hash()
      • help()
      • hex()
      • id()
      • input()
      • int()
      • issubclass()
      • iter()
      • len()
      • list()
      • locals()
      • map()
      • max()
      • memoryview()
      • min()
      • next()
      • object()
      • oct()
      • open()
      • ord()
      • pow()
      • print()
      • property()
      • range()
      • repr()
      • reversed()
      • round()
      • set()
      • setattr()
      • isinstance()
      • slice()
      • zip()
      • type()
      • sorted()
      • staticmethod()
      • str()
      • sum()
      • super()
      • tuple()
      • vars()
      • import()
    • Cобеседования Python. Разбор реальных вопросов.
    • Встроенные методы в Python
  • Учебники по Pandas и Numpy
    • Numpy
      • Функция активации ReLU для глубокого обучения: полное руководство по выпрямленному линейному блоку
      • Как нормализовать массивы NumPy (минимальное-максимальное масштабирование, Z-оценка, L2)
      • NumPy where: Условная обработка элементов массива
      • NumPy linspace: создание равномерно расположенных массивов с помощью np.linspace
      • Как рассчитать векторное произведение в Python
      • Разделение NumPy: Разделение массива NumPy на части
      • NumPy: Лучшие способы применения функции к массиву
      • NumPy full: Создание массивов с заданным значением
      • NumPy clip(): Ограничьте значения массива минимальным и максимальным значениями
      • NumPy cumsum: Расчет кумулятивных сумм массивов NumPy
      • Изучаем функцию np.histogram в NumPy: создаем гистограмму
      • NumPy arange(): Полное руководство (с примерами)
      • Руководство по индексации и срезам массивов NumPy: Полное руководство
      • NumPy argmin(): Получение индекса минимального значения в массивах
      • Выравнивание массива с помощью NumPy flatten
      • Объединение массивов NumPy по различным осям с использованием функции stack
      • Удаление размерности из массивов NumPy с помощью NumPy Squeeze
      • Функция np.repeat() NumPy: Повторение массивов NumPy
      • Использование функции NumPy.exp() для вычисления экспоненты
      • Реализация функции сигмоида на Python
      • NumPy Pad: Использование np.pad() для дополнения массивов и матриц
      • np.argmax(): Как использовать NumPy Argmax
      • NumPy logspace: Понимание функции np.logspace()
      • Использование NumPy Tile для Расположения Массивов
      • NumPy Zeros: Создание массивов и матриц с нулями в NumPy
      • Использование числа Пи в Python (NumPy и Math)
      • Распределение Нормального (Гауссова) Распределения в Numpy (Случайное Нормальное в Numpy)
      • NumPy для Data Science на Python
      • Расчет скалярного произведения с использованием Numpy в Python
      • Расчет натурального логарифма на Python
    • Pandas
      • Python сводные таблицы – Полное руководство
      • Изучение API стиля Pandas
      • Объяснение группировки по нескольким столбцам в Pandas с примерами
      • Удаление индексной колонки DataFrame в Pandas: Руководство с примерами
      • Pandas Quantile: Расчет процентилей в DataFrame
      • Как рассчитать скользящее среднее (среднее арифметическое) в Pandas
      • Руководство по использованию метода fillna в Pandas для работы с отсутствующими данными в DataFrame
      • Pandas unique(): Получение уникальных значений в DataFrame
      • Распакуйте Ваши Данные с Помощью Функции Melt в Pandas
      • Pandas date_range: Как Создать Диапазон Дат в Pandas
      • Сброс индекса в Pandas: как сбросить индекс в Pandas
      • Pandas replace() – Замена значений в DataFrame Pandas
      • Перемещение столбца DataFrame Pandas на позицию (В начало и в конец)
      • Учебное пособие по Python Pandas: полное руководство
      • Pandas: Замена NaN на нули
      • Преобразование DataFrame Pandas в файл Pickle
      • Конвертация Pandas DataFrame в JSON
      • Преобразование DataFrame Pandas в Словарь
      • Преобразование Pandas DataFrame в Список
      • Чтение файлов Parquet в Pandas с помощью pd.read_parquet
      • Pandas dropna(): Удаление отсутствующих записей и столбцов в DataFrame
      • Как Добавить Новый Столбец в DataFrame Pandas
      • Подсчёт уникальных значений в Pandas
      • Отображение всех столбцов и строк в DataFrame Pandas
      • Pandas to_excel: Запись DataFrames в файлы Excel
      • Как использовать Pandas для чтения файлов Excel в Python
      • Преобразование списка словарей в Pandas DataFrame
      • Как добавить/вставить строку в DataFrame Pandas
      • Диаграмма рассеяния в Pandas: Как создать диаграмму рассеяния в Pandas
      • Pandas to_datetime: Преобразование строки Pandas в дату и время
      • Введение в Pandas для Data Science
      • Индексация, Выборка и Присваивание Данных в Pandas
      • Суммирование и Анализ Pandas DataFrame
      • Преобразование столбцов Pandas с помощью map и apply
      • Группировка данных в Pandas с использованием cut и qcut
      • Дата и время в Pandas и Python
      • Очистка и подготовка данных в Pandas и Python
      • Pandas GroupBy: группировка, суммирование и агрегация данных в Python
      • Pandas Дата и Время в Части Даты (месяц, год и т.д.)
      • Pandas: Получение номера строки из DataFrame
      • Вычисление Взвешенного Среднего в Pandas и Python
      • Как перемешать строки Pandas Dataframe в Python
      • Pandas: количество столбцов (подсчет столбцов в DataFrame)
      • Pandas Sum: сложение столбцов и строк DataFrame
      • Pandas Diff: Вычисление Разницы Между Строками Pandas
      • Нормализация столбца или датафрейма Pandas (с использованием Pandas или sklearn)
      • Функция Rank в Pandas: Ранжирование данных в Dataframe (Эквивалент SQL row_number)
      • Pandas Describe: Описательная статистика вашего Dataframe
      • Pandas Shift: Перемещение столбца DataFrame вверх или вниз
      • 7 Способов Выполнения Выборки Данных в Pandas
      • Экспорт DataFrame Pandas в CSV файл – Использование .to_csv()
      • Pandas: Итерация по строкам DataFrame в Pandas
      • Pandas: Преобразование значений столбца в строки
      • Дисперсия в Pandas: Вычисление дисперсии столбца в Pandas Dataframe
      • Pandas: Создание DataFrame из списков (5 способов!)
      • Pandas Rename Index: Как переименовать индекс DataFrame в Pandas
      • Pandas: Подсчёт уникальных значений в объекте GroupBy
      • Pandas: Добавить дни к колонке с датами
      • Среднее в Pandas: Как рассчитать среднее для одной или нескольких колонок
      • Pandas Column to List – Конвертируйте колонку Pandas в список
      • Транспонирование Dataframe в Pandas
      • Python: Разделение DataFrame Pandas
      • Как получить имена столбцов в DataFrame Pandas
      • Pandas: Количество строк в DataFrame (6 способов)
      • Создание пустого DataFrame Pandas и добавление данных
      • Как переименовать столбцы в Pandas DataFrame (с примерами)
      • Изменение порядка столбцов в Pandas: использование метода reindex и метода insert
      • Pandas get_dummies (One-Hot кодирование), объяснение
      • Относительные и Абсолютные Частоты в Python и Pandas
      • Финансовый год – Определение финансового года в Pandas
      • Как сортировать данные в DataFrame Pandas
  • Учебники Matplotlib и Seaborn
    • Seaborn
      • Регрессионные графики в Seaborn с использованием regplot и lmplot
      • Seaborn residplot – Построение остатков линейной регрессии
      • Seaborn jointplot() – Создание совместных графиков в Seaborn
      • Seaborn displot – Распределенческие графики в Python
      • Seaborn ecdfplot – Эмпирические функции накопленного распределения
      • Seaborn rugplot – Визуализация маргинальных распределений
      • Seaborn kdeplot – Создание графиков оценки плотности ядра
      • Seaborn histplot – Создание Гистограмм в Seaborn
      • Seaborn catplot – Визуализация категориальных данных в Python
      • Средняя тенденция для категориальных данных в Seaborn Pointplot
      • Seaborn stripplot: Jitter Plots для распределений категориальных данных
      • Seaborn Countplot – Подсчет категориальных данных в Python
      • Seaborn swarmplot: Bee Swarm Plots для распределения категориальных данных
      • Скрипичные графики Seaborn в Python: Полное руководство
      • Настройка расположения легенд Seaborn, меток, текста и т.д.
      • Тепловая карта Seaborn: Полное руководство
      • Создание многосекционных сеток в Seaborn с помощью FacetGrid
      • Удаление рамки в Seaborn: Как работать с рамкой
      • Заголовки и метки осей в Seaborn: добавление и настройка
      • Как установить Seaborn в Python (Исправление: no module named seaborn)
      • Seaborn relplot – Создание точечных и линейных графиков
      • Полное руководство по созданию точечных диаграмм (scatter plots) в Python с использованием Seaborn
    • Matplotlib
      • Режим Retina в Matplotlib: Улучшение Качества Графиков
      • Как построить функцию в Python с использованием Matplotlib
      • Как создать 3D-диаграммы рассеяния в Matplotlib
      • Как изменить размер шрифта в графике Matplotlib
      • Установка размера маркера в точечных диаграммах Matplotlib
      • Как изменить размер графика и фигуры в Matplotlib
      • Как добавить названия в Matplotlib: Заголовок, Подзаголовок, Названия Осей
      • Pandas Scatter Plot: Как создать диаграмму рассеяния в Pandas
      • Построение графиков в Python с помощью Matplotlib
      • Диаграммы рассеяния Matplotlib – Все, что вам нужно знать
      • Диаграммы с столбцами в Matplotlib – Узнайте все, что вам нужно знать
      • Линейные диаграммы Matplotlib – Всё, что вам нужно знать
      • Построение гистограммы в Python с Matplotlib и Pandas
  • Алгоритмы
    • Алгоритм поиска в ширину (BFS) в Python
    • Алгоритм поиска в глубину (DFS) на Python
  • AI создает хедж-фонд для анализа акций на Python
Powered by GitBook
On this page
  • Понимание функции Seaborn countplot()
  • Создание простого countplot() с помощью Seaborn
  • Сортировка столбцов в countplot() с помощью Seaborn
  • Создание Группированного Графика Количеств в Seaborn
  • Создание Горизонтального Графика Частоты в Seaborn
  • Добавление значений на график подсчета Seaborn
  • Изменение цветов в Count Plot Seaborn
  • Добавление Заголовка и Меток Оси к Графику Подсчета в Seaborn
  • Изменение расположения легенды в графике подсчета Seaborn
  • Заключение
  • Дополнительные ресурсы
  1. Учебники Matplotlib и Seaborn
  2. Seaborn

Seaborn Countplot – Подсчет категориальных данных в Python

PreviousSeaborn stripplot: Jitter Plots для распределений категориальных данныхNextSeaborn swarmplot: Bee Swarm Plots для распределения категориальных данных

Last updated 1 year ago

В этом руководстве вы узнаете, как использовать функцию countplot() из Seaborn для создания информативных графиков частот. График частот похож на гистограмму и гистограмму и показывает количество категориальных значений. Seaborn предоставляет простой и интуитивно понятный способ создания информативных графиков частот, которые легко создавать и понимать.

В конце этого урока вы узнаете следующее:

  • Как использовать функцию Seaborn countplot()

  • Как создавать простые графики подсчета, сгруппированные графики подсчета и горизонтальные графики подсчета

  • Как настроить графики подсчета, изменив порядок сортировки, добавив метки значений, а также описательные заголовки и метки осей.

  • Как изменить и настроить цвета, используемые на графиках подсчета Seaborn

Оглавление

Понимание функции Seaborn countplot()

Функция countplot() из библиотеки Seaborn предоставляет удобный интерфейс для создания графиков частот. Это позволяет работать как с векторными данными, так и с DataFrame из Pandas, что встречается чаще. Ниже приведен обзор параметров и аргументов по умолчанию, доступных в функции sns.countplot():

# Understanding the Seaborn countplot() Function
seaborn.countplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, ax=None, **kwargs)

Хотя мы не будем рассматривать все перечисленные параметры, мы рассмотрим самые важные, включая:

  • data=, x= и y= предоставляют DataFrame Pandas и метки столбцов для использования при построении графика данных.

  • hue= позволяет указать дополнительный столбец для разделения данных по цвету

  • color= и palette= позволяют настроить стиль графика

  • order= позволяет настроить порядок отображения столбцов на графике количества

Давайте теперь разберемся, как создать простой график распределения в Seaborn и постепенно добавлять в него детали и настройки.

Создание простого countplot() с помощью Seaborn

Для создания простого count plot с использованием Seaborn, вам нужно предоставить Pandas DataFrame, который вы хотите использовать, а также столбец, значения которого вы хотите подсчитать

Это позволяет передать DataFrame в параметр data= и метку столбца в параметр x=. Используя параметр x=, данные будут отображаться вдоль оси x для вертикального графика с подсчетом.

# Creating a Simple Count Plot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day')
plt.show()

В приведенном выше блоке кода мы использовали набор данных 'tips' из библиотеки Seaborn. Данный набор предоставляет информацию о количестве чаевых, оставленных в разные дни недели. Используя функцию countplot() из Seaborn, мы смогли создать следующий countplot.

Мы видим, что Seaborn создал простой график-количественник для нас. По умолчанию Seaborn использует следующие настройки

  • Элементы расположены в порядке их появления в наборе данных

  • Для каждой панели свой цвет

  • Метки осей используют метки столбцов, предоставленные DataFrame

Давайте посмотрим, как можно настроить этот график, сначала отсортировав столбцы.

Сортировка столбцов в countplot() с помощью Seaborn

По умолчанию Seaborn будет сортировать столбцы в count plot в порядке их появления в наборе данных. Однако мы можем настроить этот порядок, используя параметр order=. Этот параметр принимает список значений, представляющих метки в наборе данных.

Давайте посмотрим, как можно отсортировать значения от большего к меньшему.

Сортировка столбцов от большего к меньшему в Countplot Seaborn

Seaborn предоставляет наивный способ сортировки значений, позволяя передавать список меток. Это позволяет задать точный порядок, в котором вы хотите отсортировать значения.

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

# Changing Count Order From Most to Least Frequent
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', order=['Sat', 'Sun', 'Thur', 'Fri'])
plt.show()

Это возвращает визуализацию данных ниже, где столбцы отсортированы от самого высокого к самому низкому.

# Changing Count Order From Most to Least Frequent
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', order=df['day'].value_counts().index)
plt.show()

Используя метод value_counts(), мы можем получить порядок категорий, используя атрибут .index. Это возвращает объект, похожий на список, где значения отсортированы от большего к меньшему.

Сортировка столбцов от наименьшего к наибольшему на графическом графике Seaborn

Аналогично приведенному выше примеру, мы можем сортировать бары от меньшего к большему, изменив порядок сортировки в методе .value_counts(). Поскольку мы можем передать аргумент ascending=True, Pandas вернет порядок в обратном порядке.

# Changing Count Order From Least to Most Frequent
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', order=df['day'].value_counts(ascending=True).index)
plt.show()

Изменяя способ подсчета наших значений (например, чтобы подсчитывать их в порядке возрастания), наши столбцы теперь отсортированы от меньшего к большему.

В следующем разделе вы узнаете, как создать сгруппированный график с количеством в Seaborn.

Создание Группированного Графика Количеств в Seaborn

Создание группированного графика счетчиков позволяет добавить дополнительное измерение данных в визуализацию. Это позволяет сравнивать одну категорию внутри другой категории. Для этого в Seaborn можно использовать параметр hue=. Параметр принимает строковый ярлык столбца, добавляя разделение для каждой подкатегории в наборе данных.

# Creating Grouped Bars in a Seaborn Countplot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', hue='sex')
plt.show()

В приведенном выше блоке кода передан параметр hue='sex', который указывает Seaborn разделить каждую категорию дня по полу сотрудников. Поскольку в этом столбце два уникальных значения, Seaborn делит столбик для каждого дня на две части.

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

Создание Горизонтального Графика Частоты в Seaborn

До сих пор мы создавали вертикальные графики-диаграммы. Поскольку мы использовали x=, Seaborn строил данные вдоль оси x. Если мы хотим создать горизонтальный график-диаграмму, мы можем просто изменить функцию, использовав параметр y=

# Creating a Horizontal Count Plot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, y='day', hue='sex')
plt.show()

В приведенном выше блоке кода мы использовали тот же код, но заменили x= на y=. Это вывело категории по оси y, в результате чего получился горизонтальный график с подсчетами.

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

Добавление значений на график подсчета Seaborn

Одна из функций, которой не хватает в функции countplot библиотеки Seaborn, — это возможность добавления значений на бары, указывающих частоту каждого элемента. Однако, благодаря тому, что Seaborn построен на основе Matplotlib, мы можем использовать базовые объекты figure и axes для значительной кастомизации графика.

С версии 3.4.0, Matplotlib упростил добавление значений к объектам столбцов. Для этого мы можем использовать метод .bar_label(), чтобы добавить числовую метку к нашим столбцам.

Посмотрите на приведенный ниже код, чтобы понять, как это работает:

# Adding Values to Seaborn Count Plots
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
ax = sns.countplot(data=df, x='day', hue='sex')
for label in ax.containers:
    ax.bar_label(label)
plt.show()

В кодовом блоке выше мы проходим по каждому элементу в объекте ax.containers и добавляем метки к нашим осям. Это возвращает визуализацию ниже, где частоты добавлены к столбцам.

Мы вынуждены перебирать контейнеры, потому что используем несколько контейнеров (так как мы делим по оттенкам).

В следующих разделах вы узнаете, как настроить графики количества, изменив цвет столбцов.

Изменение цветов в Count Plot Seaborn

Самый простой способ изменить цвета в гистограмме Seaborn — использовать параметр color=. Этот параметр позволяет передавать любой цвет Matplotlib, включая CSS названия цветов и шестнадцатеричные цвета. Давайте посмотрим, как мы можем изменить цвет нашей гистограммы:

# Modifying Colors in a Seaborn Count Plot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', hue='sex', color='aquamarine')
plt.show()

В кодовом блоке выше мы передали color='aquamarine', что создало визуализацию ниже:

Мы видим, что хотя мы передали только один цвет (и это единственный вариант в Seaborn), Seaborn изменил насыщенность для разных групп.

Измените насыщенность на графике подсчета Seaborn

По умолчанию Seaborn использует более приглушенную насыщенность 0.75 от исходного цвета. Мы можем изменить эту насыщенность, используя параметр saturation=, который принимает необязательное значение с плавающей запятой от 0 до 1. Давайте посмотрим, как изменится наша визуализация при установке значения 0.5.

# Changing Saturation in Seaborn Count Plot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', hue='sex', color='aquamarine', saturation=0.5)
plt.show()

Еще больше понижая насыщенность, Seaborn возвращает следующую визуализацию:

Условное окрашивание столбца в графике подсчета Seaborn

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

# Coloring a Single Bar Conditionally
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

df = sns.load_dataset('tips')
ax = sns.countplot(data=df, x='day', hue='sex', color='aquamarine', saturation=0.5)

# Get the patches and color the tallest
patch_h = [patch.get_height() for patch in ax.patches]   
idx_tallest = np.argmax(patch_h)   
ax.patches[idx_tallest].set_facecolor('slateblue') 

plt.show()

После того как у нас есть индекс самой высокой полосы (как возвращено функцией NumPy argmax()), мы используем метод .set_facecolor(), чтобы установить цвет самой высокой полосы на 'slateblue'.

На приведенной выше диаграмме мы смогли закрасить самый высокий столбец другим цветом. Это позволяет легко привлечь внимание к определенному значению.

Использование цветовой палитры в графике частот Seaborn

Seaborn также предоставляет большой набор цветовых палитр для стилизации ваших графиков различными способами. Один из самых интуитивных способов изменить цветовую палитру - использовать параметр palette= функции countplot().

# Using a Palette in Seaborn Count Plots
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
sns.countplot(data=df, x='day', hue='sex', palette='Set2')
plt.show()

В приведенном выше примере мы передали палитру 'Set2', что привело к отображению следующей визуализации:

Мы видим, что отказ от использования стандартных цветов делает визуализацию гораздо красивее и приятнее для восприятия.

Добавление Заголовка и Меток Оси к Графику Подсчета в Seaborn

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

Это можно сделать с помощью функций осей из Matplotlib. В приведенном ниже коде мы сначала создаем объект осей ax. Это позволяет вам изменять заголовок и метки осей, используя метод осей.

# Adding a Title and Axis Labels to a Seaborn Count Plot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
ax = sns.countplot(data=df, x='day', hue='sex', palette='Set2')
ax.set_title('Number of Customers by Day and Waitstaff')
ax.set_xlabel('Day of Week')
ax.set_ylabel('# of Customers Served')
plt.show()

Добавив описательные заголовки и подписи осей, мы можем лучше понять предоставленные данные. Это особенно важно для оси y, которая ранее просто называлась "count".

В заключительном разделе ниже вы узнаете, как изменить расположение легенды в графике подсчета Seaborn.

Изменение расположения легенды в графике подсчета Seaborn

Seaborn попытается найти оптимальное расположение для легенды на основе данных, с которыми вы работаете. Однако Seaborn также предоставляет значительную гибкость для изменения позиции и стиля легенды.

В приведенном ниже блоке кода мы используем функцию plt.legend(), чтобы настроить, где должен быть расположен легенда.

# Changing Legend Location in a Seaborn Count Plot
import seaborn as sns
import matplotlib.pyplot as plt

df = sns.load_dataset('tips')
ax = sns.countplot(data=df, x='day', hue='sex', palette='Set2')
ax.set_title('Number of Customers by Day and Waitstaff')
ax.set_xlabel('Day of Week')
ax.set_ylabel('# of Customers Served')
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.show()

Размещая легенду за пределами графика, мы можем гарантировать, что ни одна точка данных не будет скрыта легендой, как показано на изображении ниже:

Изменение расположения легенды позволяет создавать более стилизованные графики.

Заключение

В этом уроке вы узнали, как использовать Seaborn для создания графиков подсчета с помощью функции countplot(). Мы начали с изучения функции и её самых важных параметров.

Оттуда мы создали простой countplot и продолжили улучшать его, внося небольшие изменения. Сначала мы научились стилизовать график, изменяя порядок столбиков и добавляя сгруппированные countplots. Затем вы узнали, как стилизовать график с помощью цвета, включая условное окрашивание столбиков.

Оттуда вы узнали, как настроить график дальше, добавив метки значений. Вы также узнали, как настроить заголовки графиков, метки осей и положение легенды.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с ресурсами ниже:

  • Seaborn Catplot — Визуализация категориальных данных в Python

  • Seaborn Boxplot – Как создать прямоугольные и усовые диаграммы

  • Графики Seaborn Violin на Python: полное руководство

  • Seaborn barplot() – создание гистограмм с помощью sns.barplot()

  • Swarmplot Seaborn: графики пчелиного роя для распределения категориальных данных

  • График Seaborn: графики Jitter для распределения категориальных данных

  • График Seaborn Pointplot: центральная тенденция для категориальных данных

Создание простой графической диаграммы Seaborn
Изменение порядка столбцов на графике подсчета Seaborn

Хотя этот метод работает, он не является динамичным. Это означает, что если наши данные изменятся, нам нужно будет задать новый порядок. Вместо этого мы можем использовать для получения порядка от наибольшего к наименьшему

Упорядочение от наименьшего к наиболее распространенному на графике подсчета Seaborn
Создание сгруппированного графика подсчета Seaborn
Создание горизонтального графика подсчета Seaborn
Добавление значений к графику подсчета Seaborn
Добавление значений к графику подсчета Seaborn
Изменение насыщенности на графике подсчета Seaborn

Чтобы раскрасить самый высокий (или самый низкий) столбик на count plot графике Seaborn, можно получить высоты каждого из столбиков. Для этого мы используем объекты patches осей и , чтобы получить высоту каждого столбика. Затем находим индекс самого высокого с помощью

Условное раскрашивание столбца на графике подсчета Seaborn
Использование цветовой палитры на графике подсчета Seaborn
Добавление заголовков и меток осей на графике подсчета Seaborn
Изменение местоположения легенды на графике подсчета Seaborn

метод value_counts из Pandas
используем списковое включение
функции argmax из NumPy
График Seaborn - Официальная документация
Понимание функции Seaborn countplot()
Создание простого графического графика Seaborn
Сортировка столбцов Seaborn countplot()
Создайте график сгруппированного подсчета в Seaborn
Создайте график горизонтального подсчета в Seaborn
Добавьте значения к графику подсчета Seaborn
Измените цвета на графике подсчета Seaborn
Добавьте заголовок и метки осей к графику подсчета Seaborn
Изменение местоположения легенды на графике подсчета Seaborn
Заключение
Дополнительные ресурсы
Creating a Horizontal Seaborn Count Plot
Adding Values to a Seaborn Count Plot
Creating a Grouped Seaborn Count Plot
Creating a Simple Seaborn Countplot
Adding Values to a Seaborn Count Plot
Ordering from Least to Most Common in Seaborn Count Plot
Changing Bar Order in a Seaborn Count Plot
Changing Saturation in a Seaborn Count Plot
Adding Titles and Axis Labels in a Seaborn Count Plot
Using a Color Palette in a Seaborn Count Plot
Coloring a Bar Conditionally in a Seaborn Count Plot
Changing Legend Location in a Seaborn Count Plot