15 различных типов визуализации данных с помощью Seaborn
Этот учебник по Seaborn знакомит вас с практической работой по построению статистических графиков с помощью Seaborn на основе набора данных iris.
Визуализация – это процесс представления данных или информации в визуальной или графической форме. В этом блоге вы познакомитесь с различными типами процессов визуализации с помощью Seaborn. Прежде чем перейти к рассмотрению различных графиков, таких как:
- Bar plot
- Scatter Plot
- Histogram
- Line Plot
- Violin Plot
- Box Plot
- Heatmap
- Point Plot
- Density Plot
- Count Plot
- Swarm Plot
- Pair Plot
- Facet Grid
- Joint Distribution Plot
- Cat plot
Давайте быстро познакомимся с Seaborn, популярной библиотекой визуализации данных на основе Matplotlib в Python, которая предлагает высокоуровневый интерфейс для создания информативных и привлекательных статистических графиков.
Установка Seaborn
Seaborn поддерживает Python 3 и выше. Если вы используете более старую версию Python, то для работы с Seaborn вам необходимо перейти на нее.
В [1]:
Pip install seaborn
После установки Seaborn необходимо импортировать его.
В [2]:
import seaborn as sns
Seaborn предоставляет некоторые встроенные наборы данных, такие как “радужка”, “кончики”, “точки”, “клей” и т.д. Другие наборы данных можно посмотреть на GitHub. Эти наборы данных хранятся во фреймах данных Pandas для более эффективной визуализации. Здесь мы используем набор данных “радужка” из Seaborn.
В [3]:
data=sns.load_dataset('iris')
data[10:15]
Выход[3]:
В [4]:
data['species'].value_counts()
Выход[4]:
1.Столбиковый график (Bar Plot)
Гистограмма используется для представления категориальной переменной и показывает только среднее значение (или другое значение оценки). Чтобы использовать этот график, мы выбираем категориальный столбец для оси x (вид) и числовой столбец для оси y (длина лепестка), и видим, что создается график, в котором среднее значение берется для каждого категориального столбца.
В [5]:
sns.barplot(x='species',y='petal_length',hue='species',data=data)
Выход[5]:
2.Диаграмма рассеяния (Scatter Plot)
Диаграмма рассеяния – это диаграмма с несколькими точками данных. Здесь мы видим тесную взаимосвязь между длиной лепестка и длиной чашелистика у разных видов. Ось X представляет собой длину лепестка, а ось Y – длину чашелистика в наборе данных.
В [6]:
sns.scatterplot(x='petal_length',y='sepal_length',hue='species',style='species',s=90,data=data)
Выход[6]:
3. Гистограмма (Histogram)
Гистограммы часто используются для визуализации распределения одной переменной, но их также можно применять для сравнения распределений двух или более переменных. Параметрkde может быть использован для отображения оценки плотности ядра (KDE) в дополнение к гистограмме. В данном случае мы используем длину чашелистика из набора данных по радужной оболочке глаза.
В [7]:
sns.histplot(x='sepal_length',kde=True,data=data)
Выход[7]:
В [8]:
sns.histplot(x='sepal_length',kde=True,hue='species',data=data)
Выход[8]:
4. Линейный график (Line Plot)
Линейные графики – это универсальный инструмент, который можно использовать для визуализации самых разных зависимостей. Их легко создавать и анализировать, и они могут быть использованы для эффективной передачи данных. На линейном графике каждая точка данных соединена линией. Здесь мы используем длину лепестка на оси X и ширину лепестка на оси Y.
В [9]:
sns.lineplot(x='petal_length',y='petal_width',data=data)
Выход[9]:
5. Скрипичный сюжет (Violin Plot)
График скрипки показывает плотность данных, подобно диаграмме рассеяния, и представляет категориальные данные, как диаграмма ящиков. Более плотная область данных является более жирной. Форма “скрипки” представляет собой оценку плотности данных по ядру, а ширина формы в каждой точке – плотность данных в этой точке. Здесь мы используем вид на оси X и длину лепестка на оси Y.
В [10]:
sns.violinplot(x='species',y='petal_length',data=data,hue='species')
Выход[10]:
6. Коробчатый график (Box Plot)
График состоит из коробки и двух усов. Он представляет собой межквартильный размах (IQR), то есть диапазон между первым и третьим квартилями. Медиана представлена линией, находящейся внутри коробки. Усики простираются в 1,5 раза дальше IQR от краев коробки до минимального и максимального значений. Выбросы – это точки данных, которые выходят за пределы этого диапазона и показываются отдельно. Здесь мы используем вид на оси X и длину чашелистика на оси Y.
В [11]:
sns.boxplot(x='species',y='sepal_length',data=data,hue='species')
Выход[11]:
7. Тепловая карта (Heatmap)
Тепловая карта – это двумерное визуальное представление данных, которое использует цвета для отображения значения переменной. Тепловые карты часто используются для демонстрации корреляции различных факторов в наборе данных друг с другом, что представлено в методе corr.
В [12]:
heat_corr=data.corr()
sns.heatmap(heat_corr,annot=True)
Выход[12]:
8. Точечный график (Point Plot)
Точечный график – это тип статистического графика, используемый для отображения среднего значения или центральной тенденции набора данных, а также его вариабельности. Точечные графики часто используются в исследовательском анализе данных для быстрой визуализации распределения набора данных или для сравнения нескольких наборов данных. Каждая точка данных в этом примере представлена в виде одной точки, а горизонтальная линия обозначает среднее значение.
В[13]:
sns.pointplot(x='species',y='petal_length',data=data,markers ='^',color='g')
Выход[13]:
9. График плотности (Density Plot)
График плотности показывает распределение наборов данных путем оценки их функции вероятности непрерывных случайных величин, он также известен как график оценки плотности ядра (KDE). Здесь хорошо видно, как плотность распределения длины лепестка по видам.
В [14]:
sns.kdeplot(x='petal_length',data=data,hue='species',multiple='stack')
Выход[14]:
В [15]:
sns.kdeplot(x='petal_length',y='sepal_length',data=data,hue='species')
Выход[15]:
10. Счетный участок (Count Plot)
График подсчета – это тип категориального графика, который показывает количество наблюдений в каждой категории категориальной переменной. По сути, это столбчатая диаграмма, где высота каждого столбца представляет собой количество наблюдений в определенной категории. В данном случае подсчитывается общее количество точек данных по каждому виду. График показывает, что каждый вид содержит одинаковое количество точек данных в наборе данных.
В [16]:
sns.countplot(x='species', data=data)
Выход[16]:
11. График роя (Swarm Plot)
Графики роя Seaborn, скорее всего, похожи на графики полос, за исключением того, что точки изменены таким образом, чтобы предотвратить их перекрытие, что помогает лучше представить распределение значений. На графике каждая точка данных представлена в виде точки, причем точки расположены таким образом, что они не перекрывают друг друга вдоль категориальной оси. Здесь все точки данных по ширине чашелистика представлены точкой для каждого вида в отдельности.
В[17]:
sns.swarmplot(x='sepal_width',y='species',data=data,hue='species',dodge=True,orient='h',size=8)
Выход[17]:
12. Парный график (Pair Plot)
График пар визуализирует парные отношения между несколькими переменными в наборе данных. При этом создается сетка осей таким образом, что все числовые точки данных образуют график между собой, по оси X с одним столбцом, а по оси Y – с одной строкой. Диагональные графики – это графики одномерного распределения, которые рисуют маргинальное распределение данных в каждом столбце. Здесь график представляет взаимосвязь между всеми переменными в наборе данных по радужной оболочке глаза.
In [18]:
sns.set(rc = {"figure.figsize":(6,3)})
sns.pairplot(data=data,hue='species')
Выход[18]:
13. Фасетная сетка (Facet Grid)
Функция FacetGrid в Сиборне, принимая на вход набор данных и одну или несколько категориальных переменных, создает сетку графиков с одним графиком для каждой комбинации категориальных переменных. Каждый график в сетке может быть настроен на различные типы графиков, такие как диаграммы рассеяния, гистограммы или квадратные диаграммы, в зависимости от визуализируемых данных. Здесь визуализируется длина лепестка в зависимости от вида.
В[19]:
g=sns.FacetGrid(data, col="species",height=4,hue='species')
g.map(sns.histplot, "petal_length")
Выход[19]:
14. График совместного распределения (Joint Distribution Plot)
Совместные графики объединяют два разных графика в одно представление, позволяя увидеть взаимосвязь (бивариантную зависимость) между двумя переменными. На этом изображении в центре визуализации построена диаграмма рассеяния (с помощью KDE plots), а для лучшего понимания переменных они представлены на осях x и y.
В [20]:
sns.jointplot(x="sepal_length", y="sepal_width", data=data,
palette='Set2',hue='species')
Выход[20]:
15. Cat Plot (Categorical Plot)
Кошачий график (сокращение от категориального графика) – это тип графика в Seaborn, который позволяет визуализировать связь между одной или несколькими категориальными переменными и непрерывной переменной в наборе данных. Он может использоваться для отображения распределений, сравнения групп или демонстрации взаимосвязи между различными переменными. Здесь представлена зависимость между длиной лепестка и видом в наборе данных по ирисам.
In [21]:
sns.catplot(data=data, x="petal_length", y="species", kind="violin", color=".9", inner=None)
sns.swarmplot(data=data, x="petal_length", y="species", size=3)
Выход[21]:
Заключение:
В заключение можно сказать, что Seaborn – это ценный инструмент для всех, кто работает с данными на Python, будь то специалист по изучению данных, аналитик или исследователь. Простые в использовании функции и привлекательная графика делают его отличным выбором для изучения и передачи информации о данных. Кроме того, интеграция с другими библиотеками анализа данных Python, такими как Pandas, делает его мощным инструментом для исследования и визуализации данных.