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

#python #pandas #matplotlib

#python #pandas #matplotlib

Вопрос:

У меня есть столбец Pandas с данными, уникальными для .0001

Я хотел бы построить гистограмму, которая имеет столбик для каждого уникального .0001 данных.

Я добиваюсь большей детализации с помощью

 plt.hist(df['data'], bins=500)
  

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

Как бы я это сделал? Спасибо

Ответ №1:

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

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

df = pd.DataFrame({'data': np.repeat(np.arange(0.0005, 0.0030, 0.0001), 10)})

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(15, 4))
ax1.hist(df['data'], bins=np.arange(df['data'].min(), df['data'].max(), 0.0001), ec='w')
ax1.set_title('bin boundaries on top of the values')
ax2.hist(df['data'], bins=np.arange(df['data'].min() - 0.00005, df['data'].max()   0.0001, 0.0001), ec='w')
ax2.set_title('bin boundaries in-between the values')
plt.show()
  

пример графика

Обратите внимание, что версия с границами на половинках также красиво помещает x-тики в центр ячеек.

Ответ №2:

Вместо того, чтобы указывать количество ячеек bins=500 , вы можете указать ячейки:

 plt.hist(df['data'], bins=np.arange(df['data'].min(), df['data'].max(), 0.0001) )