У меня есть фрейм данных pandas, созданный как показано ниже
df_hist2 = pd.DataFrame({'Score':np.random.uniform(0,1,4300)}).append(
pd.DataFrame({'Score':np.random.uniform(1,3,6900)}),ignore_index=True).append(
pd.DataFrame({'Score':np.random.uniform(3,5,4900)}),ignore_index=True).append(
pd.DataFrame({'Score':np.random.uniform(5,10,2000)}),ignore_index=True).append(
pd.DataFrame({'Score':np.random.uniform(10,24,2100)}),ignore_index=True);
И я могу создать из него гистограмму, как показано ниже
df_hist2.plot.hist(bins=[0,1,3,5,10,24], edgecolor='black', linewidth=1.2)
И это что-то вроде этого

Однако я хочу создать гистограмму, которая показывает плотность частоты, а не только частоты, где
Плотность частоты = частота / ширинаящика
Я могу построить гистограмму, где я могу создать категорию для каждого из ячеек ('0-1', '1-3' и т. д.) и рассчитать плотности вручную.Однако есть ли более элегантный и простой способ сделать это?
Более того, для этого нужно было бы сначала рассчитать частоты по данным гистограммы.(в этом случае я знаю, так как я генерирую данные вручную, но не знаю, в случае реальных данных)
Я хотел бы иметь что-то, что вычисляет и строит следующую диаграмму
Hours | Frequency | Width | Density |
--------------------------------------------|
0 - 1 | 4300 | 1 | 4300/1 = 4300 |
1 - 3 | 6900 | 2 | 6900/2 = 3450 |
3 - 5 | 4900 | 2 | 4900/2 = 2450 |
5 - 10 | 2000 | 5 | 2000/5 = 400 |
10 - 24 | 2100 | 14 | 2100/14 = 150 |
И график, похожий на следующий (выполненный в Excel с некоторым ручным редактированием)
Примечание. Ширина интервала / ячейки сохраняется.Высота изменяется с учетом частоты.
