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