我创建了一个熊猫数据框,如下所示
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)
它是这样的
但是,我想创建一个直方图来显示频率密度,而不仅仅是显示频率
频率密度 = 频率 / 箱的宽度
我可以绘制一个条形图,在其中我可以为每个 bin('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 中通过一些手动编辑完成)
注意:间隔/bin 的宽度被保留。改变高度以反映频率。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句