Введение в визуализацию данных с Seaborn

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'svg'

Для демонстрации инстументов визуализации используем набор данных о чаевых.

tips = sns.load_dataset('tips')
tips.head()
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4

Визуализация распределения

Seaborn — это более высокоуровневое API на базе библиотеки matplotlib. Seaborn содержит более адекватные дефолтные настройки оформления графиков. Если просто добавить в код import seaborn, то картинки станут гораздо симпатичнее. Также в библиотеке есть достаточно сложные типы визуализации, которые в matplotlib потребовали бы большого количество кода.

Для визуализации распределения метрических переменных используются следующие типы графиков:

  • distplot
  • jointplot
  • rugplot
  • kdeplot

Можно таже визуализировать относительные распределения между парами переменных при помощи методов:

  • PairGrid
  • pairplot
  • FacetGrid

distplot

distplot одновременно показывает гистограмму и график плотности распределения.

sns.distplot(tips['total_bill']);

Можно оставить только гистограмму:

sns.distplot(tips['total_bill'], kde=False, bins=30);

jointplot

Функция jointplot() показывает совместное распределение по двум переменным. Она имеет параметр kind который может принимать следующие значения:

  • “scatter”
  • “reg”
  • “resid”
  • “kde”
  • “hex”
sns.jointplot(x='total_bill', y='tip', data=tips, kind='scatter');
sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex');
sns.jointplot(x='total_bill', y='tip', data=tips, kind='reg');

pairplot

pairplot показывает отношения между всеми парами переменных.

sns.pairplot(tips);
sns.pairplot(tips, hue='sex', palette='Set1');

По сути pairplot — это упрощённая версия другой функции, которая называется PairGrid.

sns.PairGrid(tips);
g = sns.PairGrid(tips)
g.map(plt.scatter);