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

Матплотлиб гистограмма – простое иллюстрированное руководство

Все, что вам нужно знать, чтобы начать работу с функциональностью гистограммы Matplotlib [+ бонусное видео]

Автор оригинала: Adam Murphy.

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

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

Попробуйте сами Перед тем, как начать читать эту статью, попробуйте построить свою первую гистограмму самостоятельно в нашей интерактивной оболочке Python:

Упражнение : Измените количество точек данных на 2000 год и среднее значение 160. Запустите код снова и посмотрите на новую гистограмму!

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

Что такое гистограмма?

Перед тем, как мы кодируем что-нибудь, нам нужно понять, какие гистограммы в целом. Давайте посмотрим на некоторые.

Вышеуказанные гистограммы графики высоты 10 000 женщин США. Ось X – это высота в CMS. Мы сгруппировали высоту в диапазоне 2 см в ширину I.E. 140см-142 см, 142см-144 см и т. Д. И мы называем эти диапазоны BINS Отказ

Так как кто-то может быть любой Высота, мы говорим, что высота – это Непрерывная переменная. Это числовой, имеет порядок, и есть неограниченное количество значений. Теоретически вы можете построить постоянные переменные, используя гистограмму. Но если вы запланированы дискретные численные переменные, например, Результаты прокатки кости, легче кодировать гистограмму, чем гистограмма.

Обратите внимание, что между бинами нет места. Белые линии являются чисто эстетическими. Кроме того, Bins – это промежутки времени на половину открытых Bin 140см-142см [140, 142). Это означает, что он включает в себя 140см и исключает 142 см. Единственным исключением является окончательная бин, который включает в себя с обеих сторон.

Ось Y – это общее количество раз, которое мы наблюдали определенную высоту. Мы называем это Частота Отказ

Гистограммы также могут показать вероятность на оси Y. Сумма общей площади под гистограммой составляет 1. Мы видим, что Вероятность США женского пола Быть высоким высоким 158см-160см чуть более 0,05. Так мы можем сказать, что 5% женщин США, которые мы измерены, это высота? К сожалению нет. Чтобы получить вероятность значения, находящегося в конкретном корзине, мы рассчитаем область бара, используя bin_width x Высота Отказ В этом случае это 2см x.1. Так что 10% женщин измерены 158см-160см высокими.

Давайте изменим размер корзины, чтобы быть 1 см.

Обратите внимание, что форма графика аналогична, и вероятности на оси Y одинаковы.

Теперь в диапазоне 158см-160см находятся 2 бара. Каждый бар имеет высоту ~ 0,05. Таким образом, вероятность быть в каждом баре:

  • 158см-159см: 1 х,05
  • 159см-160смл 1 х 05

Следовательно, комбинированная вероятность составляет 0,05 +1. Это так же, как указано выше.

Лучше не доверять вероятностям на оси Y. Они всегда будут «правильными», но фактическая вероятность быть в определенной корзине bin_width х высота Отказ

Это становится более запутанным, если мы используем BINS из различных размеров.

Вероятность Bin 160см-180см составляет 0,03, но фактическая вероятность быть в том, что корзину составляет 20 х,5,6.

Это «юридическая» гистограмма. Но лучшая практика использовать бункеры одного и того же размера. Почему?

Гистограммы показывают нам распределение наших данных с первого взгляда. Это невероятно ценно. Ученые широко изучали много распределений. Если наши данные подходят для одного из этих распределений, мы мгновенно знаем много об этом. Форма вышеуказанных гистограмм – Нормальное распределение И вы увидите это везде.

Давайте суммируемся тем, что мы узнали о гистограммах. Если вы понимаете эти очки, построение их будет ветером.

Гистограмма:

  • Участок одной непрерывной переменной E.g. Высота в см
    • Мы можем легко увидеть распределение
  • X-AXIS – непрерывные данные, сгруппированные в BINS
    • Нет пустого пространства между бинами
    • Банки не должны иметь такую же ширину (но обычно делают)
  • Ось Y – Частота или вероятность
  • Для расчета вероятности значения, находящегося в корзину, сделать bin_width х вероятность Отказ Не доверяйте вероятностям оси Y!

Теперь вы знаете теорию позади гистограмм, давайте построим их в Python с matplotlib.pyplot.

Гистограмма Matplotlib – основной участок

Во-первых, нам нужны некоторые данные.

Я пошел в это Сайт, чтобы узнать среднюю высоту и стандартное отклонение женщин США. Общеизвестно, что высота обычно распространяется. Так что я использовал Python’s Случайные Модуль для создания 10 000 образцов

import random

# data obtained online
mean = 162
std = 7.1

# set seed so we can reproduce our results
random.seed(1)

# use list comprehension to generate 10,000 samples
us_female_heights = [random.normalvariate(mean, std) for i in range(10000)]

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

import seaborn as sns

sns.set()

Самая основная гистограмма в matplotlib.pyplot действительно легко сделать

import matplotlib.pyplot as plt

plt.hist(us_female_heights)
plt.show()

Не плохо для основных настроек. Общая форма ясна. Мы видим, что большинство данных сосредоточены в середине – 155см-170см. Мы также можем увидеть счетчики частоты.

Поскольку мы знаем наши данные, мы знаем, что ось X высота в CM, а ось Y – это частота. Но вы должны всегда Пометьте свои оси. Другие люди не знают, что показывает этот график. Добавление этикеток делает это понятно. Напишите эти три строки кода, чтобы дать графику заголовка и этикетки оси.

plt.hist(us_female_heights)
plt.title('Height of 10,000 US Females')
plt.xlabel('Height (cm)')
plt.ylabel('Frequency')
plt.show()

Намного лучше!

Чтобы сохранить место, мы не будем включать строки кода, которые этикетки оси. Но убедитесь, что вы включаете их.

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

Матплотлиб гистограмма – основной график плотности

Знание частоты наблюдений приятно. Но если у нас есть миллиардные образцы, становится трудно прочитать ось Y. Таким образом, мы бы предпочли иметь вероятность.

В Математика , а Функция плотности вероятности Возвращает вероятность непрерывной переменной. Если переменная дискретна, это называется вероятность массы функция Отказ Я нашел эту терминологию очень запутанно, когда я впервые услышал это. Проверьте это Невероятный стек обмена ответом, чтобы понять его более подробно.

Таким образом, гистограмма с вероятностью на оси Y является функцией плотности вероятности. Итак, мы устанавливаем ключевое слово плотности в PLT.Hist () к Правда Отказ

plt.hist(us_female_heights, density=True)
plt.show()

Очень легко помешать частоты и плотности. Поскольку графики плотности более полезны и легче читать, мы сохраним плотность = правда впредь.

Давайте более подробный взгляд на наши данные, изменив размер корзины.

Матплотлиб гистограмма утонченности

Решение оптимального количества бункеров для гистограммы – это горячее обсуждение темы. Вы можете повлиять на то, как ваши данные воспринимаются путем изменения этого. Таким образом, многие математики создали формулы для оптимизации размера бен.

Мы изменим количество контейнеров, использующих BINS ключевое слово в PLT.Hist ( ). Он принимает целое число, список или строка.

Целочисленные бункеры

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

# 5 bins
plt.hist(us_female_heights, density=True, bins=5)
plt.show()

Настройка мусорных барабанов до очень низкого значения дает вам общий обзор данных.

# 40 bins
plt.hist(us_female_heights, density=True, bins=40)
plt.show()

Установка мусорных барабанов до высокого числа дает вам более подробный вид данных.

Хотя мы устанавливаем BINS = 40 , вы не можете видеть 40 банок на участке. Это потому, что остальные бункеры слишком малы, чтобы увидеть.

>>> min(us_female_heights)
131.67453350862354

>>> max(us_female_heights)
191.1310915602654

После проверки значений MIN/MAX наших данных мы видим, что должны быть утекаться до 131 и до 192 года. Они содержат только небольшое количество образцов, чтобы их вероятность очень низкая. Таким образом, мы не можем видеть их на сюжете.

Настройка бинов в целочисленное значение – хороший ярлык, но мы его не рекомендуем. Почему? Потому что Matplotlib никогда не выбирает милую ширину корзины. На BINS = 5 Сюжет, самый большой бин начинается с ~ 155 и заканчивается на ~ 167. Это делает нашу гистограмму трудно читать, если мы фактически хотим добывать идеи.

Гораздо лучше настроить бин края себя. Мы делаем это, проходя со списком списка или Numpy Array. Если вам нужен переподготовка к Numpy Library, посмотрите наш полный урок Numpy, который учит вам все, что вам нужно, чтобы начать работу с наукой о данных.

Список утонченность

После того, как у нас есть идея о наших данных, мы можем установить BINS вручную. Мы люди любим работать со всеми числами. Поэтому мы хотели бы, чтобы наши кромки Bin тоже были целыми номерами.

Идеальная ситуация начнется в 130, закончилась в 192 году и подниматься в шагах 2 см

ideal_bins = [130, 132, 134, ..., 192]

Мы используем функцию NP.Arge для создания этого.

ideal_bins = np.arange(130, 194, 2)

Максимальное значение – 191,1 … Итак, мы хотим, чтобы наш последний бин-край быть 192 (помните, что стоимость остановки исключительно в NP.Arge ). Для полного объяснения NP.Arge, проверьте нашу Статья Отказ

Давайте передам это на PLT.Hist () :

plt.hist(us_female_heights, density=True, bins=ideal_bins)
plt.show()

Гораздо проще прочитать эту гистограмму, потому что мы знаем, где находится каждый край BIN.

Мы можем сделать его более подробным, установив размер шага до 1 в NP.Arge () Отказ

plt.hist(us_female_heights, density=True, bins=np.arange(130, 193, 1))
plt.show()

Хороший! Теперь у нас еще более подробный обзор.

Чтобы установить бункеры разных размеров, пройдите список/массив с помощью нужных ребер.

my_bin_edges = [130, 140, 142, 155, 158, 160, 180, 190]
plt.hist(us_female_heights, density=True, bins=my_bin_edges)
plt.show()

Большую часть времени вы захотите построить гистограммы с равномерной шириной корзины. Но приятно знать, как изменить их на все, что вы хотите.

Струнные бункеры

Вы можете использовать несколько математических формул для вычисления оптимального размера корзины. Мы перечислим варианты доступными для вас. Если вы хотите более подробное объяснение каждого, пожалуйста, прочитайте Numpy Docs Отказ Каждый из них производит хороший вывод, и все они лучше, чем настройки по умолчанию MatPlotlib.

  • авто
  • FD – Оценщик Freedman Diamonis
  • донарядный
  • совокупность
  • камень
  • рис
  • соревнования
  • SQRT

Вот наши данные, использующие.

Вот наш сюжет, использующий «Скотт».

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

Большая часть обучения пробует новые вещи. Таким образом, для ваших первых проектов анализа данных, наложите ваши данные как можно больше способов. С течением времени вы получите «чувствовать», для которого является лучший метод.

Резюме

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

Теперь вы понимаете Какие гистограммы и почему они важны Отказ Вы можете сделать Плотность графиков это показывает вероятность на оси Y. И ты можешь Изменить размер корзины Для всего, что вы хотите лучше понять ваши данные.

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

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

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

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

использованная литература

Expert Writer & Content Creator – наука о науке и машине.

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

Работать со мной, пожалуйста, обратитесь к Upwork
https://tinyurl.com/hire-adam-murphy.