Практическое руководство с примерами

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

В этой статье мы сравним две популярные библиотеки визуализации данных: Seaborn для Python и ggplot2 для R.

Мы будем использовать знаменитый набор данных titanic для создания визуализаций. Вы можете скачать файл train.csv с Kaggle, чтобы следить за ним.

Первый шаг - импортировать библиотеки и создать фрейм данных. Мы будем использовать библиотеку Pandas для Python и библиотеку data.table для R для обработки операций манипулирования данными.

import numpy as np
import pandas as pd
import seaborn as sns
sns.set(style='darkgrid')
titanic = pd.read_csv("/content/titanic.csv")
titanic.drop(['PassengerId', 'Name', 'Ticket'], 
             axis=1, inplace=True)
titanic.head()

> library(ggplot2)
> library(data.table)
> titanic <- fread("/home/soner/Downloads/datasets/titanic.csv")
> titanic[, c("PassengerId", "Name", "Ticket"):=NULL]
> head(titanic)

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

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

Сиборн:

sns.relplot(data=titanic, x="Age", y="Fare", hue="Survived",
            kind='scatter', aspect=1.4)

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

Ggplot2:

> ggplot(data = titanic) + 
+     geom_point(mapping = aes(x = Age,  y = Fare, color =  
                 Survived))

Первым шагом является функция ggplot, которая создает пустой график. Данные передаются в функцию ggplot. На втором этапе на график добавляется новый слой на основе заданных сопоставлений и типа графика. Функция geom_point создает диаграмму рассеяния. Столбцы для построения графика указываются в методе aes. Столбец цвета такой же, как параметр оттенка в библиотеке Seaborn.

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

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

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

Также покажем выживших и неживших пассажиров на разных участках.

Сиборн:

sns.displot(data=titanic, x="Age", col="Survived", kind="hist")

Параметр col разделяет точки данных, создавая отдельные подзаголовки. Если мы используем параметр row, подзаголовки создаются как строки.

Ggplot2:

> t <- ggplot(titanic, aes(Age)) + 
+     geom_histogram(bins=10, fill='lightblue')
> t + facet_grid(cols=vars(Survived))

В библиотеке ggplot2 мы можем использовать функцию facet_grid для создания сетки подзаголовков на основе категорий в заданных столбцах. Он похож на объект FacetGrid в Seaborn.

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

Сиборн:

titanic = titanic[titanic.Fare < 300]
sns.relplot(data=titanic, x="Age", y="Fare", kind="scatter",
            hue="Survived", row="Sex", col="Pclass",
            height=4)

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

Ggplot2:

Та же самая сетка графиков может быть создана с помощью библиотеки ggplot2, как показано ниже:

> titanic <- titanic[Fare < 300]
> t <- ggplot(titanic, aes(x=Age, y=Fare, color=Survived)) + geom_point()
> t + facet_grid(cols=vars(Pclass), rows=vars(Sex))

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

Заключение

И Seaborn, и ggplot2 - мощные и универсальные библиотеки визуализации данных. Я думаю, что обоих более чем достаточно для выполнения типичных задач визуализации данных.

Какой из них использовать, зависит от вашего выбора языка программирования. Поскольку и Python, и R преобладают в экосистеме науки о данных, любой из них сделает эту работу за вас.

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