Вступление
Matplotlib - одна из наиболее широко используемых библиотек визуализации данных в Python. От простых до сложных визуализаций - это библиотека для большинства.
В этом уроке мы рассмотрим, как построить график гистограммы в Matplotlib . Графики гистограммы - отличный способ визуализировать распределение данных - в гистограмме каждая полоса группирует числа в диапазоны. Более высокие столбцы показывают, что в этот диапазон попадает больше данных.
Гистограмма отображает форму и разброс данных непрерывной выборки.
Импортировать данные
Мы будем использовать набор данных Netflix Shows и визуализировать распределения оттуда.
Давайте импортируем Pandas и загрузим в набор данных:
import pandas as pd
df = pd.read_csv('netflix_titles.csv')
Постройте график гистограммы в Matplotlib
Теперь, когда набор данных загружен, давайте импортируем модуль PyPlot
из Matplotlib и визуализируем распределение 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()
Здесь у нас есть сценарий с минимальными настройками. Мы загружаем
данные в DataFrame ( df
), затем используем экземпляр PyPlot и
вызываем hist()
для построения гистограммы для функции release_year
. По умолчанию это будет подсчитывать количество появлений этих лет,
заполнять столбцы в диапазонах и строить гистограмму.
Выполнение этого кода приводит к:
{.ezlazyload}
Здесь Бункеры кино (диапазоны) устанавливаются на 10 лет. В каждом баре здесь представлены все шоу / фильмы сериями по 10 лет. Например, мы видим, что в период с 2000 по 2010 год было выпущено около 750 шоу. В то же время, с 2010 по 2020 год было выпущено около 5000 шоу.
Это довольно большие диапазоны для киноиндустрии, имеет смысл визуализировать их для диапазонов менее 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()
На этот раз мы извлекли столбец DataFrame в data
, чтобы упростить
работу.
Мы передали data
в hist()
и установили аргумент bins
Он принимает
список, который вы можете установить вручную, если хотите, особенно если
вы хотите неравномерное распределение корзин.
Поскольку мы хотели бы объединить эти записи в один и тот же промежуток
времени (1 год), мы создадим массив Numpy, который начинается с
наименьшего значения ( min(data)
) и заканчивается наивысшим значением
( max(data)
) и идет с шагом 1
.
На этот раз запуск этого кода приводит к:
{.ezlazyload}
Вместо списка вы можете указать одно значение bins
Это будет общее
количество 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 равным ячейкам, данные в которых объединяются и отображаются в соответствующих столбцах:
{.ezlazyload}
Это приводит к пятилетним интервалам, учитывая, что у нас есть данные за ~ 100 лет. Разделение его на 20 ячеек означает, что каждый будет содержать данные за 5 лет.
Постройте гистограмму с плотностью
Иногда вместо подсчета функций мы хотели бы проверить, какова плотность каждой полосы / корзины. То есть, насколько часто можно увидеть диапазон в заданном наборе данных. Поскольку мы работаем с интервалом в 1 год, это дает вероятность того, что фильм / шоу был выпущен в этом году.
Для этого мы можем просто установить аргумент density
True
:
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()
Теперь вместо количества, которое мы видели раньше, нам будет представлена плотность записей:
{.ezlazyload}
Мы видим, что ~ 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 счетчик или плотность для заполнения графикаhisttype
- Тип графика гистограммы (по умолчанию -bar
, хотя доступны другие значения, такие какstep
илиstepfilled
alpha
- альфа / прозрачность линийalign
- с какой стороны ящиков выровнены полосы, по умолчанию -mid
orientation
- горизонтальная / вертикальная ориентация, по умолчаниюvertical
log
- следует ли отображать график в логарифмической шкале или нет
Теперь это приводит к:
{.ezlazyload}
Поскольку мы установили align
по right
краю, мы видим, что полоса
немного смещена вправо по вертикали от корзины 2020.
Заключение
В этом руководстве мы рассмотрели несколько способов построения графика гистограммы с использованием Matplotlib и Python.
Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :
::: {style=“border: 1px solid #ebebeb;padding: 15px;”} {.ebook-link}
Визуализация данных в Python
::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::
::: {.col-md-8 .col-xs-12 .my-auto} Станьте опасными с визуализацией данных
✅ 30-дневная гарантия возврата денег без вопросов
✅ от начального до продвинутого
✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)
✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::
Визуализация данных в Python с помощью Matplotlib и Pandas - это книга, предназначенная для абсолютных новичков в работе с Pandas и Matplotlib с базовыми знаниями Python и позволяющая им создать прочную основу для расширенной работы с этими библиотеками - от простых графиков до анимированных трехмерных графиков с интерактивными кнопки.
Он служит подробным руководством, которое научит вас всему, что вам нужно знать о Pandas и Matplotlib, в том числе о том, как создавать типы графиков, которые не встроены в саму библиотеку.
Книга «Визуализация данных в Python» , книга для начинающих и средних разработчиков Python, проведет вас через простые манипуляции с данными с помощью Pandas, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. В частности, на протяжении 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.
Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.