Объяснено на примерах с использованием 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.
Эти базовые визуализации можно создать практически с любой библиотекой визуализаций. Важно знать, когда их использовать, и понимать, что они нам говорят.
Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.