Красота родом из морских глубин
Библиотека визуализации Seaborn отличается "врожденной" красотой, так что графики даже с настройками по умолчанию будут выглядеть очень красиво. Рассмотрим наиболее распространенные из тех возможностей, которые она предлагает на примере популярного датасета о цветках Ириса.
Подключим нужные библиотеки и загрузим набор данных с помощью библиотеки Scikit-learn:
from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np np.random.seed(0) data = load_iris() X = pd.DataFrame(data.data, columns=data.feature_names) y = pd.Series(data.target, name='target').astype('str').\ replace({str(it):data.target_names[it] for it in data.target}) df = X.join(y) df
Распределения значений в столбцах
Дискретная величина
Если распределение дискретное, то удобно использовать функцию countplot:
sns.countplot(x=df['target'])
Когда значения переменной и их частоты находятся в разных столбцах, используйте barplot:
df_bar = df.target.value_counts().reset_index() df_bar sns.barplot(data = df_bar, y = 'index', x = 'target', palette='inferno')
Обратите внимание, что в этой версии в функцию передаются названия столбцов датафрейма (а не колонки) и он сам в параметре data, что также допустимо.
Непрерывная величина
Для визуализации распределения непрерывных переменных можно обратиться к displot. Отобразим гистограмму, оценку плотности распределения и кумулятивной функции распределения:
sns.displot(df['sepal length (cm)'], kind='hist') sns.displot(df['sepal length (cm)'], kind='kde') sns.displot(df['sepal length (cm)'], kind='ecdf')
Обратите внимание, что вывод displot регулируется параметром kind. Для данных типов графиков существуют собственные функции с "говорящими" названиями histplot, kdeplot, ecdfplot.
А так можно на одном графике получить и гистограмму, и плотность (kde=True):
sns.displot(df['sepal length (cm)'], kde=True)
В ряде функций Seaborn разрешает использовать параметр hue, который позволяет выводить графики для значений этого столбца независимо:
sns.displot(data=df, y='sepal length (cm)', kind='hist', hue='target')
Здесь столбцы перекрываются, что немного осложняет анализ. Однако видно, что значения 'sepal length (cm)' для setosa отличаются от других цветков.
Точечное распределение
Диаграммы рассеяния строятся, используя scatterplot:
sns.scatterplot(data=df,x='sepal width (cm)', y='sepal length (cm)', hue='target')
Обратите внимание, что здесь подмеченная выше тенденция так же видна.
Попарное распределение
Похожую на предыдущий график визуализацию, но для всех пар входящих в датафрейм переменных можно построить функцией pairplot:
g = sns.pairplot(df, hue = 'target') g.fig.set_figwidth(10) g.fig.set_figheight(6)
Обратите внимание на регулировку размера графика.
Линейный график с регрессией
С помощью Seaborn можно строить график зависимости y от x и одновременно регрессионную прямую с помощью regplot:
x = np.random.uniform(100, size=100) y = np.power(x, 0.5) sns.regplot(x=x, y=y)
Простой график зависимости
Самый простой график для связи точек с заданными координатами задается функцией lineplot:
sns.lineplot(x=x, y=y)