Средняя тенденция для категориальных данных в Seaborn Pointplot

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

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

  • Что такое точечный график и почему вы хотите его использовать

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

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

Оглавление

Понимание точечных графиков

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

Это делает их довольно похожими на столбчатые диаграммы. Однако они также предоставляют линии ошибок, чтобы показать различные меры, такие как доверительные интервалы. Аналогично, они используют линии между измерениями (хотя они отличаются от линейных диаграмм!). Это облегчает восприятие различий между категориями.

Взгляните на изображение ниже, на котором показаны аспекты точечного графика:

Understanding Point Plots
Понимание точечных графиков

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

Понимание функции точечной диаграммы Seaborn

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

# Понимание функции seaborn.pointplot()
seaborn.pointplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, estimator='mean', errorbar=('ci', 95), n_boot=1000, units=None, seed=None, markers='o', linestyles='-', dodge=False, join=True, scale=1, orient=None, color=None, palette=None, errwidth=None, ci='deprecated', capsize=None, label=None, ax=None)

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

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

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

Давайте начнем этот урок, создав очень простую точечную диаграмму в Seaborn. Мы можем сделать это, используя только три параметра в функции sns.pointplot().

  1. data= указывает на pandas DataFrame, который мы хотим использовать

  2. x= обозначает метку категориального столбца, которую мы хотим использовать. Даже если мы передаем непрерывную переменную, Seaborn будет интерпретировать это как категориальную.

  3. y= обозначает столбец, по которому мы хотим агрегировать данные

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

# Создание простого точечного графика с помощью Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip')
plt.show()

В приведенном выше блоке кода мы импортировали Seaborn и pyplot. Затем мы использовали функцию sns.load_dataset() для загрузки набора данных 'tips'. Наконец, мы создали точечный график с использованием функции sns.pointplot(), который отображается ниже:

A Simple Seaborn Point Plot
Простой точечный график Сиборна

График по умолчанию показывает нам следующую информацию:

  • Средний размер чаевых, разбитый по дням (представлен точками на графике)

  • Относительное изменение между днями (представлено линиями, соединяющими точки)

  • 95%-ный доверительный интервал, основанный на результатах бутстрэппинга (отображается вертикальными линиями, пересекающимися с точками)

Этот график сам по себе дает нам массу информации! Но на этом останавливаться не обязательно. Мы можем использовать множество параметров, которые предлагает нам функция, для того, чтобы сделать график более персонализированным. Давайте посмотрим, как мы можем добавить дополнительную категориальную переменную к нашему графику, используя параметр hue= в следующем разделе.

Добавление цвета для дополнительных переменных с помощью точечной диаграммы Seaborn

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

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

# Добавление дополнительных переменных с цветом к точечным графикам Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex')
plt.show()

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

An Overlapping Point Plot with Hue in Seaborn
График перекрывающихся точек с оттенком в Сиборне

В данный момент эту визуализацию довольно сложно рассмотреть. Из-за того что наши линии перекрываются, мы теряем довольно много деталей. Давайте исправим это в следующем разделе.

Предотвращение перекрытия на графиках точек Seaborn

Мы можем предотвратить наложение линий в точечных графиках Seaborn, используя параметр dodge=. По умолчанию он установлен в значение False. Изменив его на True, Seaborn разделит линии.

# Создание линий на точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=True)
plt.show()

При использовании параметра dodge=True мы получаем следующее изображение, где линии точечного графика немного раздвинуты.

Dodging Point Plots Lines
Линии графика точек уклонения

Параметр dodge= не принимает только булево значение. Мы можем дополнительно настроить вывод, передав в него число с плавающей точкой. Посмотрите на блок кода ниже, где мы делаем именно это.

# Указание параметра dodge в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25)
plt.show()

В приведенном выше блоке кода мы добавили к параметру dodge= значение 0.25. Это позволяет сместить линии на 0.25 от ширины категории.

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

Specifying Dodge with Seaborn Point Plots
Определение уклонения с помощью точечных графиков Сиборна

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

Изменение расчета оценщика на точечных графиках Seaborn

По умолчанию функция pointplot() в Seaborn агрегирует переменные до их среднего значения. Однако мы можем настроить способ агрегации данных с помощью параметра estimator=. Параметр принимает либо строку, представляющую статистическую функцию (например, 'std' для стандартного отклонения), либо вызываемый объект, который отображает вектор.

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

# Изменение расчетов оценщика в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, estimator='std')
plt.show()

Для изменения оценщика достаточно передать строку (или вызываемый объект) в параметр estimator=. Передав 'std', мы агрегировали данные для отображения стандартного отклонения по каждому дню и гендеру.

Modifying the Estimator Used in Seaborn Point Plots
Изменение средства оценки, используемого в точечных графиках Сиборна

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

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

Добавление колпачков к нашим погрешностям может быть полезным способом, чтобы сделать диапазоны ошибок более понятными. Seaborn позволяет это сделать, используя параметр capsize=, который принимает в качестве ввода число с плавающей точкой. Подобно предыдущему, это представляет собой дробное представление ширины нашей категории.

# Изменение размеров заглушек в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, capsize=0.25)
plt.show()

В приведенном выше блоке кода мы передали значение 0.25, что создало концевую заглушку погрешности, равную четверти ширины категории. Посмотрите на изображение ниже, чтобы увидеть, что получилось в итоге:

Adding End Caps to Seaborn Point Plots
Добавление концов к точечным графикам Сиборна

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

Изменение расчета панели погрешностей на графиках точек Seaborn

По умолчанию Seaborn создает планку ошибки, основанную на рассчитанном 95% доверительном интервале. Seaborn будет использовать бутстрапирование результата (то есть выборку точек с заменой) заданное количество раз (по умолчанию 1000 раз). Однако мы можем изменить это, используя другой метод расчета планки ошибки.

Seaborn принимает следующие расчеты для погрешностей: 'ci', 'pi', 'se', или 'sd', которые представляют следующие расчеты:

  • 'ci': интервал доверия, который рассчитывает непараметрическую неопределенность

  • 'pi': процентильный интервал, который рассчитывает непараметрическое распределение

  • 'se': стандартная ошибка, которая рассчитывает параметрическую неопределенность

  • 'sd': стандартное отклонение, которое вычисляет параметрическое распределение

Давайте посмотрим, что произойдет, когда мы передадим 'sd', чтобы вычислить стандартное отклонение:

# Изменение расчетов планок ошибок в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, capsize=0.25, errorbar='sd')
plt.show()

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

Modifying the Error Bar Calculation in Seaborn Point Plots
Изменение расчета шкалы ошибок на точечных графиках Сиборна

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

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

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

Ошибка в предоставленной информации. Для удаления планок ошибок в точечной диаграмме Seaborn следует использовать параметр ci=None, а не errorbar=None. Это полностью уберёт индикаторы ошибок.

# Удаление планок ошибок в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, capsize=0.25, errorbar=None)
plt.show()

При передаче значения None в параметр errorbar=, мы получаем следующее изображение. Стоит помнить, что теперь оно выглядит как линейный график. Это может еще больше сбить с толку читателей вашего графика.

Removing Error Bars in Seaborn Point Plots
Удаление полос ошибок на графиках точек Сиборна

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

Добавление заголовка к точечному графику Seaborn

Вы можете легко добавить заголовок к точечному графику Seaborn, используя метод .set_title(). Метод применяется непосредственно к объекту осей. Это означает, что мы можем просто присоединить метод к функции sns.pointplot(). Давайте посмотрим, как это выглядит:

# Добавление заголовка к точечному графику Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, capsize=0.25).set_title('Средний чек по дням и полу')
plt.show()

В приведенном выше коде мы использовали метод .set_title() в цепочке с объектом осей точечной диаграммы. Передавая строку, мы смогли добавить заголовок к нашей визуализации, как показано ниже:

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

Изменение меток осей на точечных графиках Seaborn

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

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

В предыдущем разделе мы использовали цепочку вызова метода .set_title() к нашему вызову функции. Это было возможно, потому что функция sns.pointplot() возвращает объект осей. Однако мы не можем продолжать использовать цепочки методов из-за того, что метод .set_title() возвращает.

Из-за этого, сначала нам нужно создать объект axes и добавить несколько вызовов методов, чтобы изменить наши метки осей.

# Изменение меток осей в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

ax = sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, capsize=0.25)
ax.set_title('Средний чек по дням и полу')
ax.set_xlabel('День недели')
ax.set_ylabel('Сумма чаевых ($)')
plt.show()

В приведенном выше блоке кода мы сначала создали ax, который представляет объект осей. Затем мы использовали метод .set_xlabel() для установки метки для оси X и метод .set_ylabel() для установки метки для оси Y.

Данное задание предполагает возврат следующей визуализации:

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

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

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

Давайте посмотрим, как мы можем использовать палитру 'Set2' в функции построения точечного графика:

# Использование палитры в точечных графиках Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

ax = sns.pointplot(data=df, x='day', y='tip', hue='sex', dodge=0.25, capsize=0.25, palette='Set2')
ax.set_title('Средний чек по дням и полу')
ax.set_xlabel('День недели')
ax.set_ylabel('Сумма чаевых ($)')
plt.show()

Путем передачи палитры с использованием параметра palette=, мы можем легко стилизовать наш график, как показано ниже:

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

Заключение

В этом руководстве вы научились создавать точечные диаграммы в Seaborn с помощью функции sns.pointplot(). Сначала вы узнали, что такое точечные диаграммы и когда они могут быть полезны. Затем вы ознакомились с различными параметрами функции.

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

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

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

Last updated