Объяснено на примерах с использованием Seaborn

Визуализация данных - очень важная часть науки о данных. Это очень полезно для изучения и понимания данных. В некоторых случаях визуализация намного лучше передает информацию, чем простые числа.

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

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

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

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

Давайте начнем с чтения наборов данных в фреймворк pandas.

import numpy as np
import pandas as pd
import seaborn as sns
sns.set(style='darkgrid')
grocery = pd.read_csv("/content/Groceries_dataset.csv", parse_dates=['Date'])
print(grocery.shape)
grocery.head()

Набор данных содержит около 40 тыс. Строк и 3 столбца. У нас есть номер участника, дата покупки и приобретенные товары в столбцах.

marketing = pd.read_csv("/content/DirectMarketing.csv")
print(marketing.shape)
marketing.head()

Набор маркетинговых данных состоит из 1000 наблюдений (то есть строк) и 10 функций (то есть столбцов). Основное внимание уделяется столбцу «AmountSpent», который показывает, сколько клиент уже потратил.

1. Линейный график

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

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

items = grocery[['Date','itemDescription']]\
.groupby('Date').count().reset_index()
items.rename(columns={'itemDescription':'itemCount'}, inplace=True)
items.head()

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

sns.relplot(x = 'Date', y = 'itemCount', 
            data=items[items.Date > '2015-06-01'], 
            kind='line', height=5, aspect=2)

Линейные графики могут быть построены с использованием функции повторного построения. Нам нужно передать аргумент 'line' параметру kind.

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

2. Диаграмма рассеяния

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

Мы визуализируем столбцы «Salary» и «AmountSpent» набора маркетинговых данных.

Диаграммы разброса также могут быть построены с использованием функции пересчета. Параметр kind принимает в качестве аргумента "scatter".

sns.relplot(x='Salary', y='AmountSpent', hue='Married', data=marketing, kind='scatter', height=7)

Параметр оттенка позволяет сравнивать разные категории на основе числовых переменных. Столбец «Женат» мы передали в параметр оттенка. Таким образом, точки данных, относящиеся к разным категориям этого столбца (холостым и женатым), отмечены разными цветами.

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

3. Гистограмма

Гистограммы используются для визуализации распределения непрерывной переменной.

В предыдущем сюжете мы видели, что женатые люди зарабатывают больше денег, чем одинокие люди в целом. Построим график распределения столбца «Зарплата» отдельно для женатых и одиноких людей.

sns.displot(x='Salary', hue='Married', data=marketing, kind='hist', aspect=1.5)

Мы использовали функцию displot, которая используется для создания графиков распределения. Параметр kind устанавливается как «hist» для создания гистограмм.

Заработная плата женатых людей имеет нормальное распределение. Есть много одиноких людей с очень низкими зарплатами.

4. График плотности ядра (KDE)

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

Чтобы сравнить гистограмму и графики kde, давайте создадим версию графика kde гистограммы из предыдущего раздела.

sns.displot(x='Salary', hue='Married', data=marketing, kind='kde', aspect=1.5)

5. Коробчатая диаграмма

Коробчатая диаграмма дает обзор распределения переменной. Он показывает, как значения распределяются с помощью квартилей и выбросов.

Давайте проверим распределение столбца AmountSpent по разным возрастным группам.

Мы воспользуемся функцией cat (обозначает категориальный) и передадим "box" параметру kind.

sns.catplot(x='Age', y='AmountSpent', data=marketing, kind='box', height=6, aspect=1.3)

Диапазон потраченных сумм для молодых людей узок по сравнению с другими возрастными группами. Во всех возрастных группах есть выбросы наверху. Линия в середине поля показывает медианное значение (среднее значение) переменной.

6. Боксенский сюжет

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

Давайте создадим коробочную версию визуализации из предыдущего раздела, чтобы мы могли сравнить.

Единственная разница в синтаксисе заключается в параметре kind, который в этом случае становится "boxen".

sns.catplot(x='Age', y='AmountSpent', data=marketing, kind='boxen', height=6, aspect=1.3)

Коробчатая диаграмма дает больше квантилей по сравнению с коробчатой ​​диаграммой. Таким образом, он предоставляет больше информации о распределении, особенно в хвостах.

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

7. Барный участок

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

Будет более понятно, когда мы его создадим. Мы будем использовать функцию catplot с опцией «bar» для параметра kind.

Ниже приведена гистограмма категориальной переменной («Дети») и числовой переменной («AmountSpent»).

sns.catplot(x='Children', y='AmountSpent', data=marketing, kind='bar', height=5, aspect=1.5)

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

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

8. 2D-гистограмма

Двухмерные гистограммы объединяют 2 разные гистограммы на сетке (ось x и ось y). Таким образом, мы можем визуализировать плотность совпадений или совпадений. Другими словами, мы визуализируем распределение пары переменных.

Мы можем легко создать 2D-гистограмму, используя функцию displot.

sns.displot(marketing, x='Salary', y='AmountSpent', kind='hist',
            height=6, aspect=1.2)

Двухмерная гистограмма дает обзор одновременного изменения двух переменных. Более темные области содержат больше точек данных. Мы можем сказать, что большинство людей находятся в нижней части столбцов AmountSpent и Salary.

Заключение

Мы рассмотрели 8 основных, но очень функциональных типов визуализации. Сиборн делает синтаксис очень простым.

Концепция группировки визуализаций с похожими функциями упрощает изучение библиотеки. Например, различные визуализации распределений могут быть созданы с помощью функции displot путем изменения параметра kind.

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

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