Как нормировать гистограмму в python
Перейти к содержимому

Как нормировать гистограмму в python

  • автор:

Как создать гистограмму из Pandas DataFrame

Как создать гистограмму из Pandas DataFrame

Вы можете использовать следующий базовый синтаксис для создания гистограммы из кадра данных pandas:

df.hist (column='col_name') 

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1. Построение одной гистограммы

В следующем коде показано, как создать одну гистограмму для определенного столбца в кадре данных pandas:

import pandas as pd #create DataFrame df = pd.DataFrame() #view first five rows of DataFrame df.head () points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 #create histogram for 'points' column df.hist (column='points') 

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

#create custom histogram for 'points' column df.hist (column='points', bins= 5 , grid= False , rwidth= .9 , color='purple') 

Pandas гистограмма

По оси X отображаются очки, набранные каждым игроком, а по оси Y — частота количества игроков, набравших такое количество очков.

Пример 2: построение нескольких гистограмм

В следующем коде показано, как построить несколько гистограмм из кадра данных pandas:

import pandas as pd #create DataFrame df = pd.DataFrame() #view first five rows df.head () team points 0 A 25 1 A 12 2 A 15 3 A 14 4 A 19 #create histogram for each team df.hist (column='points', by='team', bins= 3 , grid= False , rwidth= .9 , color='purple', sharex= True ) 

несколько гистограмм в pandas

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

Это упрощает сравнение распределения значений между двумя гистограммами.

Дополнительные ресурсы

В следующих руководствах объясняется, как создавать другие распространенные графики в Python:

Как нормализовать гистограмму pyplot?

Х​очу построить гистограмму распределения среднего выборки для экспоненциального распределения через pyplot hist. Параметр density выставил на True . Согласно документации, именно он должен нормализовать гистограмму к 1. Однако, результат мне непонятен:

expon_rv = sts.expon(loc = 0, scale = 1) sample = expon_rv.rvs(1000) n2 = 10 sample_2_mean = [] for k in range(1000): sample_2 = np.random.choice(sample, n2) sample_2_mean.append(np.mean(sample_2)) plt.hist(sample_2_mean, bins = 20, density = True) 

введите сюда описание изображения

Отслеживать
51.6k 204 204 золотых знака 67 67 серебряных знаков 251 251 бронзовый знак
задан 29 июл 2021 в 13:19
1 1 1 бронзовый знак

не дочитали документацию: If stacked is also True, the sum of the histograms is normalized to 1. Или я не так понял ваше: нормализовать гистограмму к 1 ?

29 июл 2021 в 13:23
По сути мне нужна плотность распределения, по идее она не должна превышать, я про это
29 июл 2021 в 13:29
а почему вы решили, что площадь всех прямоугольников превышает 1? 😉
29 июл 2021 в 13:31
вообще никак, но мне нужно, чтобы отображалась доля
29 июл 2021 в 13:36
какая доля и чтобы как/где отображалась?
29 июл 2021 в 13:51

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

При указании параметра density=True — суммарная площадь прямоугольников будет равна единице. Т.е. вы получаете график плотности вероятностей. Если перемножить высоту на ширину каждого прямоугольника и сложить все полученные площади — мы должны получить 1.0 .

Отслеживать
ответ дан 29 июл 2021 в 14:11
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 133 133 бронзовых знака

Я так понимаю, товарищу нужно что-то типа этого:

import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import PercentFormatter import scipy.stats as sts expon_rv = sts.expon(loc = 0, scale = 1) sample = expon_rv.rvs(1000) n2 = 10 sample_2_mean = [] for k in range(1000): sample_2 = np.random.choice(sample, n2) sample_2_mean.append(np.mean(sample_2)) weights = [x/sum(sample_2_mean) for x in sample_2_mean] plt.hist(sample_2_mean, bins = 20, weights=weights) plt.gca().yaxis.set_major_formatter(PercentFormatter(1)) #для отображения в процентах, а не в долях 

введите сюда описание изображения

Отслеживать
ответ дан 29 июл 2021 в 15:06
26k 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков

  • python
  • matplotlib
  • анализ-данных
  • статистика
  • гистограммы
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.30.8466

Как нормировать гистограмму matplotlib: лучшие способы и советы ��

Нормирование гистограммы в matplotlib может быть достигнуто с помощью метода hist(), который может принимать аргумент density=True. Этот аргумент нормализует гистограмму, приводя сумму всех столбцов к значению 1.

import matplotlib.pyplot as plt data = [1, 2, 3, 4, 5, 5, 5, 6, 6, 7, 8, 8, 9, 9, 9] plt.hist(data, density=True) plt.show()

Детальный ответ

Как нормировать гистограмму matplotlib

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

import matplotlib.pyplot as plt import numpy as np

Создание гистограммы

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

data = np.random.randn(1000) # Случайные данные plt.hist(data, bins=30, color='skyblue', edgecolor='blue') # Построение гистограммы plt.xlabel('Значения') plt.ylabel('Частота') plt.title('Гистограмма данных') plt.show()

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

Нормализация гистограммы

Теперь давайте перейдем к нормализации гистограммы, чтобы ее значения находились в диапазоне от 0 до 1. Это позволит нам сравнивать различные распределения на одном графике. Для нормализации гистограммы мы можем использовать параметр density=True функции plt.hist() :

plt.hist(data, bins=30, color='skyblue', edgecolor='blue', density=True) # Нормализация гистограммы plt.xlabel('Значения') plt.ylabel('Плотность') plt.title('Нормализованная гистограмма данных') plt.show()

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

Процентная нормализация гистограммы

Иногда нам может понадобиться нормализовать гистограмму таким образом, чтобы значения оси Y представляли проценты от общего числа элементов. Для этого мы можем использовать параметр weights функции plt.hist() и поделить значения на общее количество элементов:

count, bins, _ = plt.hist(data, bins=30, color='skyblue', edgecolor='blue', weights=np.ones(len(data)) / len(data)) # Процентная нормализация гистограммы plt.xlabel('Значения') plt.ylabel('Проценты') plt.title('Процентная нормализованная гистограмма данных') plt.show()

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

Заключение

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

5 простых способов нормировать гистограмму в python

Для нормирования гистограммы в Python вы можете использовать функцию normalize() из библиотеки numpy.

 import numpy as np import matplotlib.pyplot as plt # Создание гистограммы data = np.random.randn(1000) # Пример данных для гистограммы plt.hist(data, bins=10) # Нормирование гистограммы plt.hist(data, bins=10, density=True) plt.show() 

В приведенном примере мы создаем гистограмму, используя данные из функции random.randn() из библиотеки numpy. Затем мы вызываем функцию hist() и передаем параметр density=True, который нормализует гистограмму. Надеюсь, это помогло вам!

Детальный ответ

Как нормировать гистограмму в Python

Гистограмма — это графическое представление распределения вероятностей или частот величины. Она позволяет наглядно отобразить данные и выявить закономерности в них. Нормирование гистограммы в Python — это процесс приведения гистограммы к единичной площади под кривой. Это полезно, когда нужно сравнить распределения разных величин или просто сделать график более наглядным.

Шаг 1: Импорт библиотеки

Перед тем, как приступить к нормировке гистограммы, мы должны импортировать необходимые библиотеки. Для работы с графиками и гистограммами в Python мы будем использовать библиотеку Matplotlib.

 import matplotlib.pyplot as plt 

Шаг 2: Создание данных

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

 data = [2, 5, 5, 7, 1, 8, 4, 3, 2, 6] 

Шаг 3: Построение гистограммы

Теперь мы готовы построить гистограмму на основе наших данных. Для этого воспользуемся функцией plt.hist(). Укажем наши данные и количество бинов (столбцов гистограммы) с помощью параметра bins:

 plt.hist(data, bins=5) plt.show() 

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

Шаг 4: Нормирование гистограммы

Для нормирования гистограммы воспользуемся параметром normed=True при вызове функции plt.hist():

 plt.hist(data, bins=5, normed=True) plt.show() 

Теперь мы получим нормированную гистограмму с единичной площадью под кривой.

Шаг 5: Добавление заголовка и меток осей

Чтобы график был более информативным, можно добавить заголовок и метки осей. Для этого воспользуемся функциями plt.title(), plt.xlabel() и plt.ylabel():

 plt.hist(data, bins=5, normed=True) plt.title('Нормированная гистограмма') plt.xlabel('Значение') plt.ylabel('Частота') plt.show() 

Теперь график стал более понятным и информативным.

Заключение

Нормировка гистограммы в Python — важный шаг, который позволяет сравнить распределения разных величин и сделать график более наглядным. В этой статье мы рассмотрели шаги построения гистограммы и ее нормировки с помощью библиотеки Matplotlib. Вы можете экспериментировать с данными и параметрами функции plt.hist(), чтобы получить наилучший результат для своих данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *