Рубрики
Без рубрики

Seaborn Box Plot – Учебник и примеры

В этом уроке мы рассмотрим, как построить BoxPlot в Seaborne и Python с подробными примерами построения и настройки.

Автор оригинала: Dan Nelson.

Вступление

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

В этом уроке мы рассмотрим, как построить BoxPlot в Seaborn .

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

Импорт Данных

Нам нужно будет выбрать набор данных с непрерывными объектами, чтобы создать бокс – график, потому что бокс-графики отображают сводную статистику для непрерывных переменных-медиану и диапазон набора данных. Мы будем работать с набором данных Лесные пожары .

Мы начнем с импорта панд для загрузки и анализа набора данных. Мы, очевидно, захотим импортировать и Сиборна. Наконец, мы импортируем модуль Pyplot из Matplotlib, чтобы показать визуализации:

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

Давайте используем Pandas для чтения CSV-файла и проверим, как выглядит ваш DataFrame , распечатав его головку. Кроме того, мы хотим проверить, содержит ли набор данных какие-либо пропущенные значения:

dataframe = pd.read_csv("forestfires.csv")
print(dataframe.head())
print(dataframe.isnull().values.any())
   X  Y month  day  FFMC   DMC     DC  ISI  temp  RH  wind  rain  area
0  7  5   mar  fri  86.2  26.2   94.3  5.1   8.2  51   6.7   0.0   0.0
1  7  4   oct  tue  90.6  35.4  669.1  6.7  18.0  33   0.9   0.0   0.0
2  7  4   oct  sat  90.6  43.7  686.9  6.7  14.6  33   1.3   0.0   0.0
3  8  6   mar  fri  91.7  33.3   77.5  9.0   8.3  97   4.0   0.2   0.0
4  8  6   mar  sun  89.3  51.3  102.2  9.6  11.4  99   1.8   0.0   0.0
False

Второй оператор print возвращает False , что означает, что отсутствующих данных нет. Если бы они были, нам пришлось бы обрабатывать отсутствующие значения фрейма данных .

После того, как мы проверим согласованность нашего набора данных, мы хотим выбрать непрерывные объекты, которые мы хотим визуализировать. Мы сохраним их как собственные переменные для удобства:

FFMC = dataframe["FFMC"]
DMC = dataframe["DMC"]
DC = dataframe["DC"]
RH = dataframe["RH"]
ISI = dataframe["ISI"]
temp = dataframe["temp"]

Построение боксплота в Сиборне

Теперь, когда мы загрузили данные и выбрали объекты, которые хотим визуализировать, мы можем создать боксовые графики!

Мы можем создать boxplot, просто используя функцию Seaborn boxplot . Мы передаем фрейм данных, а также переменные, которые хотим визуализировать:

sns.boxplot(x=DMC)
plt.show()
seaborn simple box plot

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

Однако, если есть конкретное распределение, которое мы хотим видеть сегментированным по типу, мы также можем предоставить категориальную переменную X и непрерывную переменную Y.

day = dataframe["day"]
sns.boxplot(x=DMC, y=day)
plt.show()
seaborn x и y variable box plot

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

Если мы хотим визуализировать несколько столбцов одновременно, что мы предоставляем аргументам x и y ? Ну, мы предоставляем метки для нужных нам данных и предоставляем фактические данные с помощью аргумента data .

Мы можем создать новый DataFrame , содержащий только те данные, которые мы хотим визуализировать, и расплавить() его в аргумент data , предоставив такие метки, как x='variable' и y='value' :

df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()
seaborn data argument box plot

Настройка сюжета коробки Сиборна

Изменение Цвета графика Коробки

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

После выбора списка цветов с шестнадцатеричными значениями (или любого допустимого цвета Matplotlib) мы можем передать их в аргумент palette :

day = dataframe["day"]
colors = ['#78C850', '#F08030', '#6890F0','#F8D030', '#F85888', '#705898', '#98D8D8']
sns.boxplot(x=DMC, y=day, palette=colors)
plt.show()
seaborn change colors box plot

Настройка Меток Осей

Мы можем легко настроить метки по осям X и Y с помощью Seaborn, например, изменить размер шрифта, изменить метки или повернуть их, чтобы сделать тики более удобными для чтения:

df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
boxplot = sns.boxplot(x="variable", y="value", data=pd.melt(df))
boxplot.axes.set_title("Distribution of Forest Fire Conditions", fontsize=16)
boxplot.set_xlabel("Conditions", fontsize=14)
boxplot.set_ylabel("Values", fontsize=14)
plt.show()
seaborn customize box plot axis labels

Заказ Коробочных Участков

Если мы хотим просмотреть поля в определенном порядке, мы можем сделать это, используя аргумент order и указав имена столбцов в том порядке, в котором вы хотите их видеть:

df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
boxplot = sns.boxplot(x="variable", y="value", data=pd.melt(df), order=["DC", "DMC", "FFMC", "ISI"])
boxplot.axes.set_title("Distribution of Forest Fire Conditions", fontsize=16)
boxplot.set_xlabel("Conditions", fontsize=14)
boxplot.set_ylabel("Values", fontsize=14)
plt.show()
seaborn order box plots

Создание Подзаголовков

Если бы мы хотели разделить графики для отдельных объектов на их собственные подзаголовки, мы могли бы сделать это, создав фигуру и оси с помощью функции subplots из Matplotlib. Затем мы используем объект axes и обращаемся к ним через их индекс. Функция boxplot() принимает аргумент ax , указывающий, на каких осях он должен быть нанесен:

fig, axes = plt.subplots(1, 2)
sns.boxplot(x=day, y=DMC, orient='v', ax=axes[0])
sns.boxplot(x=day, y=DC, orient='v', ax=axes[1])
plt.show()
seaborn create box plot subplots

Boxplot С Точками Данных

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

Чтобы сделать это, мы просто создаем один объект figure, а затем создаем два разных графика. stripplot() будет наложен на boxplot() , так как они находятся на одной и той же оси /фигуре :

df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
boxplot = sns.boxplot(x="variable", y="value", data=pd.melt(df), order=["DC", "DMC", "FFMC", "ISI"])
boxplot = sns.stripplot(x="variable", y="value", data=pd.melt(df), marker="o", alpha=0.3, color="black", order=["DC", "DMC", "FFMC", "ISI"])
boxplot.axes.set_title("Distribution of Forest Fire Conditions", fontsize=16)
boxplot.set_xlabel("Conditions", fontsize=14)
boxplot.set_ylabel("Values", fontsize=14)
plt.show()
seaborn overlay strip plot over box plot

Вывод

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

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

Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair.