Рубрики
Без рубрики

Распределение Сиборна/Гистограмма – Учебник и примеры

В этом уроке мы рассмотрим, как построить график гистограммы/распределения в Python с помощью Seaborn. Мы рассмотрим графики гистограмм, размеры ячеек гистограмм, а также графики плотности и настройки.

Автор оригинала: David Landup.

Вступление

Seaborn является одной из наиболее широко используемых библиотек визуализации данных в Python, как расширение к Matplotlib . Он предлагает простой, интуитивно понятный, но легко настраиваемый API для визуализации данных.

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

Импорт Данных

Мы будем использовать набор данных Netflix Shows и визуализировать дистрибутивы оттуда.

Давайте импортируем панд и загрузим в набор данных:

import pandas as pd

df = pd.read_csv('netflix_titles.csv')

Как построить график распределения с помощью Seaborn?

Seaborn имеет различные типы распределительных участков, которые вы, возможно, захотите использовать.

Эти типы графиков: Графики KDE ( kdeplot () ) и графики гистограмм ( histplot() ). И то, и другое может быть достигнуто с помощью общей функции display() или с помощью их соответствующих функций.

Примечание: Начиная с Seaborn 0.11, distplot() стал displot() . Если вы используете более старую версию, вам также придется использовать более старую функцию.

Давайте начнем строить планы.

Постройте гистограмму/График распределения (дисплей) с Seaborn

Давайте продолжим и импортируем необходимые модули и сгенерируем Гистограмма/График распределения .

Мы визуализируем распределение функции release_year , чтобы увидеть, когда Netflix был наиболее активен с новыми дополнениями:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

# Load the data
df = pd.read_csv('netflix_titles.csv')
# Extract feature we're interested in
data = df['release_year']

# Generate histogram/distribution plot
sns.displot(data)

plt.show()

Теперь, если мы запустим код, нас встретит гистограмма, показывающая количество вхождений этих значений release_year :

гистограмма графика сиборн

График Распределения График с информацией о плотности с Seaborn

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

Давайте изменим вызов display () , чтобы изменить это:

# Extract feature we're interested in
data = df['release_year']

# Generate histogram/distribution plot
sns.displot(data, stat = 'density')

plt.show()

Единственное, что нам нужно изменить, – это предоставить аргумент stat и дать ему понять, что мы хотели бы видеть плотность, а не 'count' .

Теперь вместо подсчета, который мы видели раньше, нам будет представлена плотность записей:

информация о плотности гистограммы seaborn

Изменение размера бункера участка распределения с помощью Seaborn

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

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

data = df['release_year']

sns.displot(data, binwidth = 3)

plt.show()

Это позволит каждому бину охватывать данные в диапазоне от 3 лет:

изменение размеров ячеек гистограммы seaborn

Или же мы можем установить фиксированное количество бункеров :

data = df['release_year']

sns.displot(data, bins = 30)

plt.show()

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

гистограмма номер ячейки seaborn

Еще один отличный способ избавиться от неудобных пробелов-установить аргумент discrete в Правда :

data = df['release_year']

sns.displot(data, discrete=True)

plt.show()

Это приводит к:

гистограмма дискретных данных seaborn

Участок Распределения Участка с KDE

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

К счастью, поскольку это было действительно обычным делом, Seaborn позволяет нам построить KDEplot, просто установив аргумент key в Правда :

data = df['release_year']

sns.displot(data, discrete = True, kde = True)

plt.show()

Теперь это приводит к:

постройте гистограмму с помощью kde seaborn

Участок Совместного распределения Участок с Seaborn

Иногда вам может понадобиться визуализировать несколько объектов друг против друга и их распределение. Например, мы могли бы визуализировать распределение рейтингов шоу, а также год их добавления. Если бы мы хотели посмотреть, начнет ли Netflix добавлять больше контента для детей на протяжении многих лет, это было бы отличным сочетанием для совместного сюжета .

Давайте сделаем совместный сюжет() :

df = pd.read_csv('netflix_titles.csv')
df.dropna(inplace=True)

sns.jointplot(x = "rating", y = "release_year", data = df)

plt.show()

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

Здесь мы сделали график гистограммы для функции rating , а также график гистограммы для функции release_year :

совместный гистограммный график seaborn

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

Вывод

В этом уроке мы рассмотрели несколько способов построения графика распределения с использованием Seaborn и Python.

Если вы заинтересованы в визуализации данных и не знаете, с чего начать, обязательно ознакомьтесь с нашей связкой книг on :

Визуализация данных в Python с Matplotlib и Pandas – это книга, предназначенная для того, чтобы познакомить абсолютных новичков с Pandas и Matplotlib, обладающих базовыми знаниями Python, и позволить им создать прочную основу для продвинутой работы с библиотеками тезисов-от простых сюжетов до анимированных 3D-сюжетов с интерактивными кнопками.

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

Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. Более конкретно, в течение 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.

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