使用Python中的NumPy計算資料集的直方圖


直方圖是資料集分佈的圖形表示。它以一系列條形圖的形式表示資料,其中每個條形圖代表資料值的範圍,條形圖的高度代表在該範圍內定義的資料值的頻率。

這些主要用於表示數值資料的分佈,例如班級成績、人口分佈或員工收入分佈等。

在直方圖中,x軸表示資料值的範圍,劃分為區間;y軸表示每個區間內資料值範圍的頻率。直方圖可以透過將每個區間的頻率除以總資料值來進行歸一化,從而得到相對頻率直方圖,其中y軸表示每個區間的數值。

使用Python NumPy計算直方圖

在Python中,為了建立直方圖,我們有numpy、matplotlib和seaborn庫。在NumPy中,我們有名為histogram()的函式來處理直方圖資料。

語法

以下是為給定資料範圍建立直方圖的語法。

numpy.histogram(arr, bins, range, normed, weights, density)

其中:

  • arr 是輸入陣列

  • bins 是圖表中表示資料的條形數

  • range 定義直方圖中的值範圍

  • normed 支援density引數

  • weights 是可選引數,用於每個資料值的權重

  • Density 是將直方圖資料標準化為機率密度分佈的引數。

histogram函式的輸出將是一個元組,包含直方圖計數和bin邊緣。

示例

在下面的示例中,我們使用NumPy histogram()函式建立一個直方圖。在這裡,我們將一個數組作為輸入引數,將bins定義為10,因此直方圖將使用10個bin建立,其餘引數可以保持為none。

import numpy as np
arr = np.array([10,20,25,40,35,23])
hist = np.histogram(arr,bins = 10)
print("The histogram created:",hist)

輸出

The histogram created: (array([1, 0, 0, 1, 1, 1, 0, 0, 1, 1], dtype=int64), array([10., 13., 16., 19., 22., 25., 28., 31., 34., 37., 40.]))

示例

讓我們看另一個例子來理解numpy庫的histogram()函式。

import numpy as np
arr = np.array([[20,20,25],[40,35,23],[34,22,1]])
hist = np.histogram(arr,bins = 20)
print("The histogram created:",hist)

輸出

The histogram created: (array([1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 0, 0, 0,
1, 1, 0, 1],
 dtype=int64), array([ 1. , 2.95, 4.9 , 6.85, 8.8 , 10.75, 12.7 ,
14.65, 16.6 ,
 18.55, 20.5 , 22.45, 24.4 , 26.35, 28.3 , 30.25, 32.2 , 34.15,
 36.1 , 38.05, 40. ]))

示例

在這個例子中,我們透過指定bins以及要使用的資料範圍來建立直方圖。以下程式碼可以作為參考。

import numpy as np
arr = np.array([[20,20,25],[40,35,23],[34,22,1]])
hist = np.histogram(arr,bins = 20, range = (1,10))
print("The histogram created:", hist)

輸出

The histogram created: (array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0],
 dtype=int64), array([ 1. , 1.45, 1.9 , 2.35, 2.8 , 3.25, 3.7 ,4.15, 4.6 ,
 5.05, 5.5 , 5.95, 6.4 , 6.85, 7.3 , 7.75, 8.2 , 8.65,
 9.1 , 9.55, 10. ]))

更新於:2023年8月7日

138 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.