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

Matplotlib Histogram Plot – Учебник и примеры

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

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

Вступление

Matplotlib – одна из наиболее широко используемых библиотек визуализации данных в Python. От простых до сложных визуализаций-это библиотека для большинства.

В этом уроке мы рассмотрим, как построить график гистограммы в Matplotlib . Гистограммы-отличный способ визуализировать распределение данных – в гистограмме каждый бар группирует числа в диапазоны. Более высокие бары показывают, что больше данных попадает в этот диапазон.

Гистограмма отображает форму и разброс непрерывных выборочных данных.

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

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

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

import pandas as pd

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

Постройте график гистограммы в Matplotlib

Теперь, когда набор данных загружен, давайте импортируем модуль Matplotlib PyPlot и визуализируем распределение release_year s шоу, которые транслируются в прямом эфире на Netflix:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('netflix_titles.csv')
plt.hist(df['release_year'])

plt.show()

Здесь у нас есть сценарий минимальной настройки. Мы загружаем данные в фрейм данных ( df ), затем используем экземпляр PyPlot и вызываем функцию hist() для построения гистограммы для функции release_year . По умолчанию это будет подсчитывать количество вхождений за эти годы, заполнять бары в диапазонах и строить гистограмму.

Запуск этого кода приводит к:

matplotlib простой учебник по построению гистограммы

Здесь фильм bins (диапазоны) установлен на 10 лет. Каждый бар здесь включает в себя все шоу/фильмы партиями по 10 лет. Например, мы видим, что в период с 2000 года было выпущено около ~750 шоу. и 2010 год. В то же время в период с 2010 года было выпущено ~5000 экземпляров. и 2020 год.

Это довольно большие диапазоны для киноиндустрии, поэтому имеет смысл визуализировать это для диапазонов меньше 10 лет.

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

Скажем, давайте визуализируем график гистограммы (распределения) партиями по 1 году, так как это гораздо более реалистичные временные рамки для выпусков фильмов и шоу.

Мы импортируем numpy , так как это поможет нам рассчитать размер бункеров:

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

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']

plt.hist(data, bins = np.arange(min(data), max(data) + 1, 1))

plt.show()

На этот раз мы извлекли столбец фрейма данных в переменную data , просто чтобы немного облегчить работу с ним.

Мы передали data функции hist() и задали аргумент bins . Он принимает список, который вы можете установить вручную, если хотите, особенно если вам нужно неравномерное распределение ячеек.

Поскольку мы хотели бы объединить эти записи в один и тот же промежуток времени (1 год), мы создадим массив Numpy, который начинается с самого низкого значения ( min(data) ), заканчивается самым высоким значением ( max(data) ) и идет с шагом 1 .

На этот раз запуск этого кода приводит к:

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

Вместо списка вы можете дать одно значение bins . Это будет общее количество бункеров на участке. Использование 1 в результате получится 1 бар на весь участок.

Скажем, мы хотим иметь 20 бункеров, мы бы использовали:

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

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']

plt.hist(data, bins = 20)

plt.show()

Это приводит к получению 20 равных ячеек, причем данные в этих ячейках объединяются и визуализируются в соответствующих столбцах:

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

Это приводит к 5-летним интервалам, учитывая, что у нас есть данные на сумму ~100 лет. Разделение его на 20 ячеек означает, что каждая из них будет включать данные за 5 лет.

Постройте гистограмму с плотностью

Иногда вместо подсчета объектов мы хотели бы проверить, какова плотность каждого бара/ячейки. То есть, насколько часто можно увидеть диапазон в пределах данного набора данных. Поскольку мы работаем с интервалом в 1 год, это приведет к вероятности того, что фильм/шоу был выпущен в этом году.

Для этого мы можем просто установить аргумент density в Правда :

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

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
bins = np.arange(min(data), max(data) + 1, 1)

plt.hist(data, bins = bins, density = True)
plt.ylabel('Density')
plt.xlabel('Year')

plt.show()

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

график гистограммы с плотностью matplotlib

Мы видим, что ~18% записей были выпущены в 2018 году, а затем ~14% в 2019 году.

Настройка графиков гистограмм в Matplotlib

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

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

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
bins = np.arange(min(data), max(data) + 1, 1)

plt.hist(data, bins = bins, density = True, histtype = 'step', alpha = 0.5, align = 'right', orientation = 'horizontal', log = True)

plt.show()

Здесь мы приводим различные аргументы:

  • bins – Количество бункеров на участке
  • density – Использует ли PyPlot count или density для заполнения графика
  • hosttype – Тип гистограммы (по умолчанию используется bar , хотя доступны и другие значения, такие как step или step files )
  • alpha – Альфа/прозрачность линий
  • align – С какой стороны бункеров выровнены полосы, по умолчанию mid
  • ориентация – Горизонтальная/Вертикальная ориентация, по умолчанию вертикальная
  • log – Следует ли ставить график в логарифмическом масштабе или нет

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

настройка гистограммы matplotlib

Поскольку мы поместили align в right , мы видим, что полоса немного смещена вправо по вертикали. 2020 бин.

Вывод

В этом уроке мы рассмотрели несколько способов построения гистограммы с помощью Matplotlib и 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.

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