簡體   English   中英

使用熊貓的頻率密度圖

[英]Frequency Density Graph using 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中進行了一些手動編輯)

注意:間隔/ bin的寬度將保留。 更改高度以反映頻率。

在此處輸入圖片說明

這是一個示例,使用直方圖參數normed=1可以使您接近所需的位置,這將為您提供所需的直方圖形狀。 使用matplotlib.pyplot as plt縮放直方圖的高度,然后即可得到所需的結果:

fig = df_hist2.plot.hist(bins=[0,1,3,5,10,24], edgecolor='black', linewidth=1.2,
                   normed=True) 
plt.yticks(fig.get_yticks(), [int(x) for x in fig.get_yticks() * len(df_hist2)])

您可以根據自己的喜好進一步自定義y刻度的確切值。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM