Python數(shù)據(jù)分析入門(八):繪制直方圖
直方圖(Histogram),又稱質(zhì)量分布圖,是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的條紋表示數(shù)據(jù)分布的情況。一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。 直方圖是數(shù)值數(shù)據(jù)分布的精確圖形表示。為了構(gòu)建直方圖,第一步是將值的范圍分段,即將整個(gè)值的范圍分成一系列間隔,然后計(jì)算每個(gè)間隔中有多少值。這些值通常被指定為連續(xù)的,不重疊的變量間隔。間隔必須相鄰,并且通常是(但不是必須的)相等的大小。
繪制直方圖:
直方圖的繪制方法,使用的是plt.hist
方法來實(shí)現(xiàn),這個(gè)方法的參數(shù)以及返回值如下:
參數(shù):
x
:數(shù)組或者可以循環(huán)的序列。直方圖將會(huì)從這組數(shù)據(jù)中進(jìn)行分組。bins
:數(shù)字或者序列(數(shù)組/列表等)。如果是數(shù)字,代表的是要分成多少組。如果是序列,那么就會(huì)按照序列中指定的值進(jìn)行分組。比如[1,2,3,4]
,那么分組的時(shí)候會(huì)按照三個(gè)區(qū)間分成3組,分別是[1,2)/[2,3)/[3,4]
。range
:元組或者None,如果為元組,那么指定x
劃分區(qū)間的最大值和最小值。如果bins
是一個(gè)序列,那么range
沒有有沒有設(shè)置沒有任何影響。density
:默認(rèn)是False
,如果等于True
,那么將會(huì)使用頻率分布直方圖。每個(gè)條形表示的不是個(gè)數(shù),而是頻率/組距
(落在各組樣本數(shù)據(jù)的個(gè)數(shù)稱為頻數(shù),頻數(shù)除以樣本總個(gè)數(shù)為頻率)。cumulative
:如果這個(gè)和density
都等于True
,那么返回值的第一個(gè)參數(shù)會(huì)不斷的累加,最終等于1
。其他參數(shù):請(qǐng)參考:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html
。
返回值:
n
:數(shù)組。每個(gè)區(qū)間內(nèi)值出現(xiàn)的個(gè)數(shù),如果density=True
,那么這個(gè)將返回的是頻率/組距
。bins
:數(shù)組。區(qū)間的值。patches
:數(shù)組。每根條的對(duì)象,類型是matplotlib.patches.Rectangle
。
案例:
比如有一組電影票房時(shí)長(zhǎng),想要看下這組票房時(shí)長(zhǎng)的數(shù)據(jù),那么可以通過以下代碼來實(shí)現(xiàn):
效果圖如下:

另外,也可以通過density=True,來實(shí)現(xiàn)頻率分布直方圖。示例代碼如下:

而如果想要讓nums的總和為1,那么就需要設(shè)置cumulative=True參數(shù),示例代碼如下:
直方圖的應(yīng)用場(chǎng)景:
顯示各組數(shù)據(jù)數(shù)量分布的情況。
用于觀察異常或孤立數(shù)據(jù)。
抽取的樣本數(shù)量過小,將會(huì)產(chǎn)生較大誤差,可信度低,也就失去了統(tǒng)計(jì)的意義。因此,樣本數(shù)不應(yīng)少于50個(gè)。