Распределения
Среднее значение — лишь одно число. Оно не говорит, как данные распределены: все ли примерно одинаковые или есть выбросы, одна ли «горка» значений или две. В seaborn для этого есть гистограммы и «ящики с усами».
histplot — гистограмма
import seaborn as sns
marks = [3, 4, 4, 5, 5, 5, 4, 3, 2, 5, 4, 4]
sns.histplot(x=marks, bins=4)
Как и в matplotlib, bins — число интервалов от минимума до максимума данных. Но у seaborn есть удобные альтернативы:
binwidth=10— ширина интервала вместо их количества;binrange=(0, 100)— на каком отрезке строить интервалы;discrete=True— по столбцу на каждое целое значение (для оценок, количества детей и т. п.).
Что показывает высота: stat
stat |
Высота столбца |
|---|---|
"count" (по умолчанию) |
сколько значений в интервале |
"percent" |
процент от всех значений |
"proportion" |
доля от 0 до 1 |
"density" |
плотность: площадь всех столбцов равна 1 |
Проценты и доли удобны, чтобы сравнивать группы разного размера.
Кривая плотности
sns.histplot(x=marks, kde=True) # гистограмма + сглаженная кривая
sns.kdeplot(x=marks) # только кривая
Кривая показывает «форму» распределения без зависимости от выбора интервалов.
Сравнение групп: hue
Параметр hue — столбец, по которому данные делятся на группы разного цвета:
sns.histplot(data=df, x="рост", hue="пол", multiple="dodge")
multiple задаёт, как показывать группы: "layer" — поверх друг друга, "dodge" — рядом, "stack" — стопкой.
boxplot — ящик с усами
boxplot компактно показывает распределение в каждой группе:
sns.boxplot(data=df, x="класс", y="балл")
Как читать ящик:
- линия внутри — медиана: половина значений меньше, половина больше;
- края ящика — первый и третий квартили: внутри ящика — средние 50 % значений;
- «усы» тянутся до самых дальних значений, которые не слишком далеко от ящика;
- отдельные точки за усами — выбросы, необычно большие или малые значения.
Медиана устойчивее среднего к выбросам: одна огромная зарплата сильно сдвинет среднее, но почти не изменит медиану. Поэтому, например, зарплаты обычно сравнивают по медиане.
Порядок групп, как и в barplot, задаётся параметром order.
Итог
histplot(x=..., bins=...)илиbinwidth=...,binrange=(a, b),discrete=True;stat="count" / "percent" / "proportion" / "density"— что показывает высота;kde=Trueилиkdeplot— сглаженная кривая;hue— группы разными цветами,multiple— как их совмещать;boxplot— медиана, квартили, усы и выбросы по группам.