Что такое морской?

«Seaborn» — очень мощный модуль в Python, используемый для визуализации данных. Этот модуль в основном построен на модуле matplotlib, который предоставляет ему мощные функции. Его можно использовать для создания гибридных графиков между обычными полезными графиками, такими как гистограммы, диаграммы рассеяния и линейные графики, чтобы дать нам некоторое представление о наборе данных.

Установка и импорт

Запустите следующую команду в CMD, чтобы установить модуль:

pip install seaborn

Импортируйте необходимые модули:

import seaborn as sns
import matplotlib.pyplot as plt

До начала

Подготовка данных

Проверьте некоторые из предопределенных наборов данных от Seaborn

sns.set()
sns.get_dataset_names()
# ['anagrams','anscombe','attention','brain_networks','car_crashes',
# 'diamonds','dots','exercise','flights','fmri','gammas','geyser','iris',
# 'mpg','penguins','planets','taxis','tips','titanic']

Выберите один из наборов данных для тестирования

# get the example “iris” from the saved ones
iris = sns.load_dataset("iris")

Изменить тему

sns.set_theme(style="dark")

Исследуйте набор данных

Получить информацию о данных:

Как мы видим, он представлен в виде кадра данных pandas. Таким образом, мы можем применить к нему все функции pandas.

iris.info()  # return some information about the selected dataset

‹класс ‘pandas.core.frame.DataFrame’›

RangeIndex: 150 записей, от 0 до 149

Столбцы данных (всего 5 столбцов):

# Столбец Non-Null Count Dtype

— — — — — — — — — — — — — — -

0 sepal_length 150 ненулевой float64

1 sepal_width 150 ненулевой float64

2petal_length 150 ненулевой float64

3 лепесток_ширина 150 ненулевой float64

4 вида 150 ненулевых объектов

dtypes: float64(4), объект(1)

использование памяти: 6,0+ КБ

Просмотрите данные

iris.head()  # return the first 5 rows

sepal_length sepal_width лепесток_длина лепесток_ширина виды

0 5,1 3,5 1,4 0,2 щетина

1 4,9 3,0 1,4 0,2 щетина

2 4,7 3,2 1,3 0,2 щетинковидная

3 4,6 3,1 1,5 0,2 щетина

4 5,0 3,6 1,4 0,2 щетина

Атрибуты глобальных графиков

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

sns.pairplot(data=iris, attr1=val1, attr2=val2, ...)

Маркер

Изменяет форму точек (только для графиков с точками)

markers=["o", "s", "D"]

Размер

Изменяет размер (масштаб) графика

size=5

Аспект

Изменяет соотношение сторон сюжета

aspect=2  # means 2:1
aspect=0.5  # means 1:2

Цвет

Он меняет цвет графика

color="Red"

Палитра

Изменяет цветовую палитру сюжета

palette="Oranges"

мы можем выбрать один из следующих атрибутов (палитра):

‘Accent’, ‘Accent_r’, ‘Blues’, ‘Blues_r’, ‘BrBG’, ‘BrBG_r’, ‘BuGn’, ‘BuGn_r’, ‘BuPu’, ‘BuPu_r’, 
 ‘CMRmap’, ‘CMRmap_r’, ‘Dark2’, ‘Dark2_r’, ‘GnBu’, ‘GnBu_r’, ‘Greens’, ‘Greens_r’, ‘Greys’, ‘Greys_r’, ‘OrRd’, 

 ‘OrRd_r’, ‘Oranges’, ‘Oranges_r’, ‘PRGn’, ‘PRGn_r’, ‘Paired’, ‘Paired_r’, ‘Pastel1’, 
 ‘Pastel1_r’, ‘Pastel2’, ‘Pastel2_r’, ‘PiYG’, ‘PiYG_r’, ‘PuBu’, ‘PuBuGn’, ‘PuBuGn_r’, 
 ‘PuBu_r’, ‘PuOr’, ‘PuOr_r’, ‘PuRd’, ‘PuRd_r’, ‘Purples’, ‘Purples_r’, ‘RdBu’, ‘RdBu_r’, 
 ‘RdGy’, ‘RdGy_r’, ‘RdPu’, ‘RdPu_r’, ‘RdYlBu’, ‘RdYlBu_r’, ‘RdYlGn’, ‘RdYlGn_r’, ‘Reds’, 
 ‘Reds_r’, ‘Set1’, ‘Set1_r’, ‘Set2’, ‘Set2_r’, ‘Set3’, ‘Set3_r’, ‘Spectral’, ‘Spectral_r’, 
 ‘Wistia’, ‘Wistia_r’, ‘YlGn’, ‘YlGnBu’, ‘YlGnBu_r’, ‘YlGn_r’, ‘YlOrBr’, ‘YlOrBr_r’, ‘YlOrRd’, 
 ‘YlOrRd_r’, ‘afmhot’, ‘afmhot_r’, ‘autumn’, ‘autumn_r’, ‘binary’, ‘binary_r’, ‘bone’, 
 ‘bone_r’, ‘brg’, ‘brg_r’, ‘bwr’, ‘bwr_r’, ‘cividis’, ‘cividis_r’, ‘cool’, ‘cool_r’, ‘coolwarm’, ‘coolwarm_r’, ‘copper’, ‘copper_r’,

 ‘cubehelix’, ‘cubehelix_r’, ‘flag’, ‘flag_r’, ‘gist_earth’, ‘gist_earth_r’, ‘gist_gray’, ‘gist_gray_r’, ‘gist_heat’, ‘gist_heat_r’, ‘gist_ncar’, ‘gist_ncar_r’,
 ‘gist_rainbow’, ‘gist_rainbow_r’, ‘gist_stern’, ‘gist_stern_r’, ‘gist_yarg’, 
 ‘gist_yarg_r’, ‘gnuplot’, ‘gnuplot2’, ‘gnuplot2_r’, ‘gnuplot_r’, ‘gray’, ‘gray_r’,
 ‘hot’, ‘hot_r’, ‘hsv’, ‘hsv_r’, ‘icefire’, ‘icefire_r’, ‘inferno’, 
 ‘inferno_r’, ‘magma’, ‘magma_r’, ‘mako’, ‘mako_r’,

 ‘nipy_spectral’, ‘nipy_spectral_r’, ‘ocean’, ‘ocean_r’, ‘pink’, ‘pink_r’,
 ‘plasma’, ‘plasma_r’, ‘prism’, ‘prism_r’, ‘rainbow’, ‘rainbow_r’,
 ‘rocket’, ‘rocket_r’, ‘seismic’, ‘seismic_r’, ‘spring’, ‘spring_r’,
 ‘summer’, ‘summer_r’, ‘tab10’, ‘tab10_r’, ‘tab20’, ‘tab20_r’, ‘tab20b’,
 ‘tab20b_r’, ‘tab20c’, ‘tab20c_r’, ‘terrain’, ‘terrain_r’, ‘twilight’,
 ‘twilight_r’, ‘twilight_shifted’, ‘twilight_shifted_r’, ‘viridis’, ‘viridis_r’, ‘vlag’, ‘vlag_r’, ‘winter’, ‘wint

Метод (парного графика)

Создайте парный график, который показывает отношения между данными.

ПРИМЕЧАНИЕ. Ни один из морских графиков не будет отображаться, если вы не добавите после них метод «show».

Стандартный парный график

sns.pairplot(data=iris)  # create the plot
plt.show()  # display the plot

Категоризированный парный сюжет

Мы хотим классифицировать данные по категориям на основе столбца «виды».

sns.pairplot(data=iris, hue='species')  
plt.show()

парный график KDE

Применяется для недиагональных графиков (не диагональных), как в KDE.

sns.pairplot(data=iris, kind="kde")

Парный график гистограммы

Создайте парный график гистограммы для диагоналей.

sns.pairplot(data=iris, kind="hist")

Парный график со стилем

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

sns.pairplot(data=iris, hue="species", markers=["o", "s", "D"])

Метод (совместного сюжета)

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

Стандартный совместный сюжет

Мы можем объединить графики вместе, используя определенные столбцы. Атрибут hue указывает столбец, который мы хотим изучить относительно X и Y.

sns.jointplot(data= iris, y='sepal_width' , x='sepal_length', hue='species')

Соединение шестиугольников

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

sns.jointplot(data= iris, y='sepal_width' , x='sepal_length',  kind="hex")

Метод (гистоплот)

Создайте гистограмму для категориальных данных.

Стандартный гистоплот

Создайте гистограмму для специального столбца

sns.histplot(data=iris, x='sepal_length')

Реляционный гистограф

Мы можем выделить категории для специального столбца

sns.histplot(data= iris, x='sepal_length', hue='species')

Двусторонний гистоплот

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

sns.histplot(data= iris, x='sepal_length', hue='species', multiple='dodge')

Сложенный гистоплот

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

sns.histplot(data= iris, x='sepal_length', hue='species', multiple='stack')

Гистоплот ширины бина

Измените толщину стержней.

sns.histplot(data= iris, x='sepal_length', hue='species', binwidth=0.2)

Matplotlib.hist сложен

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

labels = iris.species.unique()  # get all categories of the column (species)
# distribute the data over the categories and get only the (sepal_length) values
newList = [iris[iris.species == i].sepal_length for i in labels] 
    
# plot the 3 independent graphs over each other 
plt.hist(newList, bins=30, stacked=True, label=labels)  
plt.legend()
plt.show()

Мы можем превратить их в тонкие стержни

plt.hist(newList, bins=30, stacked=True, label=labels, histtype='bar', rwidth=0.8)

Мы можем показать только шаги

plt.hist(newList, bins=30, stacked=True, label=labels, histtype='step')

Метод (расстояние)

Создайте distplot для числовых данных. Это комбинация линейного графика и гистограммы.

iris = iris.iloc[:, :-1]  # we have to delete any non-numeric data

Стандартный дистплот

sns.distplot(iris)

Бункеры distplot

Мы можем изменить количество баров (бинов) для графика.

sns.distplot(iris, bins=30)

Скрытая гистограмма

Мы можем скрыть гистограмму в фоновом режиме.

sns.distplot(iris, bins=30, hist=False)

Цветной дистплот

Мы можем изменить его цвет.

sns.distplot(iris, bins=30, color="Red")

Метод (lmplot)

Создайте lmplot (линейный график) для числовых данных. Это комбинация графика рассеяния и линейного графика.

Стандартный график

sns.lmplot(data=iris, x="sepal_length", y="petal_length")

Scatter lplot

Скройте линию линейной регрессии и оставьте точечный график.

sns.lmplot(data=iris, x="sepal_length", y="petal_length", fit_reg=False)

Пользовательская диагональ к lmplot

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

sns.lmplot(data=iris, x="petal_width", y="petal_length", fit_reg=False)
plt.plot((0, 8), (0, 8), 'k--')
plt.show()

Указанный lmplot

Стройте линейные графики для определенных столбцов. Атрибут hue указывает столбец, который мы хотим изучить относительно X и Y.

sns.lmplot(data=iris, x="sepal_length", y="petal_length", hue="species")

Метод (kdeplot)

Создайте график KDE (оценка плотности ядра) для числовых данных. Это график, который переводит точечный график в непрерывные линии, чтобы показать области плотности данных.

Стандартный kdeplot

sns.kdeplot(iris.sepal_width, iris.sepal_length)

Цветной kdeplot

sns.kdeplot(iris.sepal_width, iris.sepal_length, cmap="Reds")

Затененный kdeplot

sns.kdeplot(iris.sepal_width, iris.sepal_length, shade=True)

kdeplot с фоновым затенением

sns.kdeplot(iris.sepal_width, iris.sepal_length, shade=True, shade_lowest=True)

Метод (тепловой карты)

Создайте тепловую карту для числовых данных.

Стандартная тепловая карта

sns.heatmap(iris.corr(), annot=True, cmap='RdBu_r')

Скрытая тепловая карта

Мы можем скрыть аннотации с тепловой карты.

sns.heatmap(iris.corr(), annot=False, cmap='RdBu_r')

Метод (блочной диаграммы)

Создайте коробчатую диаграмму между категориальными и числовыми данными.

Стандартный боксплот

постройте все столбцы с соответствующими категориями.

sns.boxplot(data=iris)

Горизонтальный ящик

sns.boxplot(data=iris, orient="h")

Указанный блокплот

отображать специальные столбцы в виде коробчатой ​​диаграммы

sns.boxplot(data=iris, orient="h", x='sepal_length', y='species')

Boxenplot

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

sns.boxenplot(data=iris)

Метод (скрипичный сюжет)

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

Стандартный скрипичный сюжет

построить общий скрипичный сюжет для всех столбцов.

sns.violinplot(data=iris)

Указанный скрипичный сюжет

построить общий скрипичный сюжет для двух столбцов. На оси X должны быть категориальные данные, а на оси Y должны быть числовые точки данных.

sns.violinplot (данные = радужка, x = iris.species, y = iris.petal_length)

Метод (роевой план)

Создайте swarmplot для числовых данных.

Стандартный роевой график

построить общий график для всех функций

sns.swarmplot(data=iris, orient="v")

Метод (FacetGrid)

FacetGrid с использованием столбца

iris = sns.load_dataset("iris")
myPlot = sns.FacetGrid(data=iris, col="species", hue="petal_length")
myPlot = myPlot.map(plt.hist, "sepal_length")

FacetGrid с использованием строки

iris = sns.load_dataset("iris")
myPlot = sns.FacetGrid(data=iris, row="species", hue="petal_width")
myPlot = myPlot.map(plt.hist, "sepal_width")