</>
Тема 3 из 4

Связи между величинами

Как связаны площадь квартиры и её цена? Температура и время суток? Часы подготовки и балл? Для таких вопросов нужны графики, где обе оси — числа. В seaborn это scatterplot и lineplot.

scatterplot — каждая точка отдельно

import seaborn as sns
import pandas as pd

df = pd.DataFrame({
    "часы": [1, 2, 3, 4, 5, 6],
    "балл": [50, 58, 60, 71, 75, 86],
    "класс": ["7а", "7б", "7а", "7б", "7а", "7б"],
})
sns.scatterplot(data=df, x="часы", y="балл")

Это то же, что plt.scatter, но по столбцам таблицы и с автоматическими подписями осей.

Группы: hue, style, size

Главная сила seaborn — дополнительные измерения через оформление:

sns.scatterplot(data=df, x="часы", y="балл", hue="класс")
  • hue — цвет точки зависит от столбца (группы или число);
  • style — форма маркера зависит от столбца;
  • size — размер точки зависит от числового столбца.

Легенда появляется автоматически. Порядок групп в ней — порядок первого появления в данных; задать его явно можно через hue_order=[...]. Цвета — параметром palette.

lineplot — линия с усреднением

lineplot соединяет точки линией, отсортировав их по x. Если одному значению x соответствует несколько значений y, рисуется их среднее:

visits = pd.DataFrame({
    "день": [1, 1, 2, 2, 3, 3],
    "посетителей": [100, 120, 90, 110, 150, 170],
})
sns.lineplot(data=visits, x="день", y="посетителей")

Линия пройдёт через 110, 100 и 160. Вокруг неё по умолчанию рисуется полупрозрачная полоса — интервал неопределённости среднего. Её отключают параметром errorbar=None.

Что считать вместо среднего — задаёт estimator: "median", "max", "sum".

Несколько линий

С hue получится отдельная линия для каждой группы — удобно сравнивать:

sns.lineplot(data=sales, x="месяц", y="выручка", hue="магазин", errorbar=None)

У каждой линии своё усреднение — внутри своей группы.

relplot — отдельные графики по группам

Если групп много и линии мешают друг другу, relplot строит сетку графиков — по одному на группу:

sns.relplot(data=sales, x="месяц", y="выручка", col="магазин", kind="line")

Итог

  • scatterplot — точки по двум числовым столбцам;
  • hue, style, size — группы цветом, формой, размером; hue_order — порядок групп;
  • lineplot — линия по возрастанию x, повторяющиеся x усредняются; errorbar=None убирает полосу;
  • estimator — что считать вместо среднего;
  • hue в lineplot — по линии на группу; relplot(col=...) — отдельные графики.