Графики распределения имеют решающее значение для EDA

Первым шагом любого информационного продукта должно быть понимание необработанных данных. Для успешных и эффективных продуктов этот этап занимает значительную часть всего рабочего процесса.

Есть несколько методов, используемых для понимания и изучения данных. Один из них - создание визуализаций данных. Они помогают нам исследовать и объяснять данные.

Создавая подходящие и хорошо продуманные визуализации, мы можем обнаружить основную структуру и взаимосвязи в данных.

Графики распределения имеют решающее значение для исследовательского анализа данных. Они помогают нам обнаружить выбросы и асимметрию или получить обзор показателей центральной тенденции (среднего, медианного и мода).

В этой статье мы рассмотрим более 10 примеров, чтобы научиться создавать графики распространения с помощью библиотеки Seaborn для Python. В качестве примеров мы будем использовать небольшую выборку из набора данных жилья Мельбурна, доступного на Kaggle.

Начнем с импорта библиотек и чтения набора данных во фрейм данных Pandas.

import pandas as pd
import seaborn as sns
sns.set(style="darkgrid", font_scale=1.2)
df = pd.read_csv(
  "/content/melb_housing.csv", 
  usecols=["Regionname", "Type", "Rooms", "Distance", "Price"]
)
df.head()

Набор данных содержит некоторые характеристики домов в Мельбурне вместе с их ценами.

Функция отображения в Seaborn позволяет создавать 3 различных типа графиков распределения, а именно:

  • Гистограмма
  • График Kde (оценка плотности ядра)
  • Ecdf сюжет

Нам просто нужно настроить параметр kind, чтобы выбрать тип графика.

Пример 1

Первый пример - создание базовой гистограммы. Он делит диапазон значений непрерывных переменных на дискретные ячейки и показывает, сколько значений существует в каждой ячейке.

sns.displot(
  data=df,
  x="Price",
  kind="hist",
  aspect=1.4
)

Мы передаем имя фрейма данных параметру данных. Параметр x принимает имя столбца для построения графика. Параметр аспекта регулирует соотношение ширины и высоты размера. Также можно изменить высоту.

Пример 2

В первом примере мы ясно видим, что в столбце цен есть выбросы. Гистограмма имеет длинный хвост справа, что указывает на небольшое количество домов с очень высокими ценами.

Один из способов уменьшить влияние таких выбросов - это вести журнал значений. Функция displot может выполнять эту операцию с помощью параметра log_scale.

sns.displot(
  data=df,
  x="Price",
  kind="hist",
  aspect=1.4,
  log_scale=10
)

Цена представлена ​​как степень 10. Теперь у нас есть лучший обзор распределения цен на жилье.

Пример 3

Мы также можем настроить количество интервалов в гистограмме. В некоторых случаях желательно иметь меньшее количество ящиков, чтобы получить более структурированный обзор.

Параметр, который следует использовать для этой настройки, - это ячейки.

sns.displot(
  data=df,
  x="Price",
  kind="hist",
  aspect=1.4,
  log_scale=10,
  bins=20
)

Пример 4

Набор данных также содержит категориальные переменные. Например, в столбце типа есть 3 категории: h (дом), t (городской дом) и u (квартира). Возможно, нам потребуется проверить распределение каждого типа отдельно.

Один из вариантов - показать их разными цветами в одной визуализации. Нам просто нужно передать имя столбца в параметр оттенка.

sns.displot(
  data=df,
  x="Price",
  hue="Type",
  kind="hist",
  aspect=1.4,
  log_scale=10,
  bins=20
)

Этот сюжет предоставляет нам 2 части информации:

  • Размер каждой категории в зависимости от количества домов. Категория h - самая большая.
  • Распределение цен на дома в каждой категории.

Пример 5

Другой вариант проверки распределения для каждой категории отдельно - создание отдельных графиков. Для этой задачи мы можем использовать параметр col или row. Для каждой категории в данном столбце будет подзаголовок.

sns.displot(
  data=df,
  x="Price",
  col="Type",
  kind="hist",
  aspect=1.4,
  log_scale=10,
  bins=20
)

Пример 6

Функция displot также позволяет создавать двумерные гистограммы. Таким образом, мы получаем обзор распределения наблюдений (то есть строк) относительно значений в 2 столбцах.

Давайте создадим его, используя столбцы с ценой и расстоянием. Мы просто передаем имена столбцов в параметры x и y.

sns.displot(
  data=df,
  x="Price",
  y="Distance",
  col="Type",
  kind="hist",
  height=5,
  aspect=1.2,
  log_scale=(10,0),
  bins=20
)

Более темные области более плотные, поэтому они содержат больше наблюдений. Кажется, что оба столбца имеют нормальное распределение, потому что плотные области находятся в центре.

Вы могли заметить, что мы использовали кортеж в качестве аргумента для параметра log_scale. Таким образом, мы можем передать разный масштаб для каждого столбца.

Пример 7

Графики Kde также можно использовать для визуализации распределения переменных. Они очень похожи на гистограммы. Однако график kde представляет распределение с использованием непрерывной кривой плотности вероятности, а не с дискретными ячейками.

Параметр kind устанавливается как «kde» для создания графиков kde.

sns.displot(
  data=df,
  x="Price",
  kind="kde",
  aspect=1.4,
  log_scale=10
)

Пример 8

Подобно гистограммам, графики kde могут быть построены отдельно для разных категорий. Наш набор данных содержит информацию о регионах домов. Посмотрим, как меняются цены в разных регионах.

sns.displot(
  data=df,
  x="Price",
  hue="Regionname",
  kind="kde",
  height=6,
  aspect=1.4,
  log_scale=10
)

Южный столичный регион, кажется, имеет самую высокую среднюю стоимость жилья.

Пример 9

Другой метод проверки распределения переменной - использование графика в формате ecdf. Он представляет собой долю или количество наблюдений, попадающих под каждое уникальное значение в данном столбце.

Это своего рода визуализация совокупной суммы. В результате мы можем видеть более плотные диапазоны значений.

sns.displot(
  data=df,
  x="Distance",
  kind="ecdf",
  height=6,
  aspect=1.4,
  stat="count"
)

Диапазоны значений, в которых наклон кривой большой, заполнены большим количеством наблюдений. Например, у нас не так много домов с расстоянием выше 30. В отличие от этого, много домов находится в диапазоне расстояний от 10 до 15.

Пример 10

Графики ecdf также поддерживают параметры оттенка, цвета и строки. Таким образом, мы можем различать распределение между разными категориями в столбце.

sns.displot(
  data=df,
  x="Distance",
  kind="ecdf",
  hue="Type",
  height=6,
  aspect=1.4,
  stat="count"
)

Заключение

Для задач анализа данных или машинного обучения очень важно узнать о распределении переменных (то есть функций). То, как мы подходим к поставленным задачам, может зависеть от распределения.

В этой статье мы увидели, как использовать функцию displot Seaborn для анализа распределения столбцов цены и расстояния.

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.