Графики распределения имеют решающее значение для 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 для анализа распределения столбцов цены и расстояния.
Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.