Автор оригинала: 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
. По умолчанию это будет подсчитывать количество вхождений за эти годы, заполнять бары в диапазонах и строить гистограмму.
Запуск этого кода приводит к:
Здесь фильм 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
.
На этот раз запуск этого кода приводит к:
Вместо списка вы можете дать одно значение 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 равных ячеек, причем данные в этих ячейках объединяются и визуализируются в соответствующих столбцах:
Это приводит к 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()
Теперь вместо подсчета, который мы видели раньше, нам будет представлена плотность записей:
Мы видим, что ~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
– Следует ли ставить график в логарифмическом масштабе или нет
Теперь это приводит к:
Поскольку мы поместили 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.
Он служит уникальным практическим руководством по визуализации данных, в изобилии инструментов, которые вы могли бы использовать в своей карьере.