Вступление
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()
Если мы хотим визуализировать только распределение категориальной переменной, мы можем предоставить выбранную нами переменную в качестве аргумента x
. Если мы сделаем это, Seaborn автоматически вычислит значения по оси Y, как мы видим на предыдущем изображении.
Однако, если есть конкретное распределение, которое мы хотим видеть сегментированным по типу, мы также можем предоставить категориальную переменную X и непрерывную переменную Y.
day = dataframe["day"] sns.boxplot(x=DMC, y=day) plt.show()
На этот раз мы можем увидеть прямоугольную диаграмму, сгенерированную для каждого дня недели, как указано в наборе данных.
Если мы хотим визуализировать несколько столбцов одновременно, что мы предоставляем аргументам 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 автоматически назначит различные цвета различным переменным, чтобы мы могли легко визуально различать их. Однако мы также можем предоставить список цветов, которые будут использоваться, если мы хотим их указать.
После выбора списка цветов с шестнадцатеричными значениями (или любого допустимого цвета Matplotlib) мы можем передать их в аргумент palette
:
day = dataframe["day"] colors = ['#78C850', '#F08030', '#6890F0','#F8D030', '#F85888', '#705898', '#98D8D8'] sns.boxplot(x=DMC, y=day, palette=colors) plt.show()
Настройка Меток Осей
Мы можем легко настроить метки по осям 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()
Заказ Коробочных Участков
Если мы хотим просмотреть поля в определенном порядке, мы можем сделать это, используя аргумент 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()
Создание Подзаголовков
Если бы мы хотели разделить графики для отдельных объектов на их собственные подзаголовки, мы могли бы сделать это, создав фигуру и оси с помощью функции 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()
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 и Python. Мы также рассмотрели, как настроить цвета, метки, порядок, а также наложить сюжеты роя и подзаголовки нескольких коробочных сюжетов.
Если вы заинтересованы в визуализации данных и не знаете, с чего начать, обязательно ознакомьтесь с нашей книгой .
Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair.