Что такое морской?
«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")