
首先按照慣例先來認(rèn)識下直方圖是誰,以下是從維基百科搬運過來的直方圖的定義:
在統(tǒng)計學(xué)中,直方圖(英語:Histogram)是一種對數(shù)據(jù)分布情況的圖形表示,是一種二維統(tǒng)計圖表,它的兩個坐標(biāo)分別是統(tǒng)計樣本和該樣本對應(yīng)的某個屬性的度量,以長條圖(bar)的形式具體表現(xiàn)。因為直方圖的長度及寬度很適合用來表現(xiàn)數(shù)量上的變化,所以較容易解讀差異小的數(shù)值。
直方圖也是用條形進(jìn)行標(biāo)注的,而條形圖和直方圖猶如孿生兄弟般讓很多人都傻傻分不清,那么我們就先來好好區(qū)分一下這兩種圖形吧:
單純文字不夠直觀的話,我們來個圖感受下:
假設(shè)我們有一組數(shù)據(jù),是一個學(xué)校200位同學(xué)的身高數(shù)據(jù),如果想要知道該校學(xué)生身高的分布,那么直方圖再合適不過了。
這里我用隨機數(shù)生成了200個值在150到180之間的數(shù)表示身高信息:
data = np.random.randint(150,180,200) data
輸出的結(jié)果:
array([162, 166, 158, 166, 165, 170, 157, 156, 164, 161, 154, 176, 166, 176, 153, 169, 164, 153, 171, 175, 171, 173, 155, 165, 168, 160, 162, 150, 151, 169, 166, 152, 174, 176, 160, 155, 158, 152, 159, 179, 179, 168, 178, 166, 174, 171, 167, 166, 165, 163, 164, 153, 153, 153, 162, 167, 169, 155, 155, 175, 161, 151, 173, 154, 151, 151, 166, 168, 167, 173, 166, 164, 175, 172, 163, 175, 154, 169, 160, 174, 163, 167, 156, 154, 157, 169, 160, 176, 150, 154, 158, 167, 164, 153, 152, 165, 165, 160, 167, 161, 164, 177, 177, 159, 161, 171, 169, 150, 165, 156, 156, 155, 165, 164, 179, 164, 179, 155, 172, 151, 178, 171, 164, 165, 161, 166, 170, 175, 163, 163, 179, 175, 173, 150, 171, 150, 178, 175, 152, 176, 168, 150, 172, 166, 176, 170, 174, 174, 152, 158, 171, 165, 167, 152, 163, 167, 164, 151, 174, 169, 169, 166, 167, 168, 179, 160, 179, 156, 168, 168, 172, 175, 160, 165, 160, 161, 164, 179, 158, 176, 175, 154, 167, 159, 153, 169, 151, 158, 163, 169, 155, 165, 178, 151, 168, 164, 169, 177, 150, 169])
以上就是200位同學(xué)的身高信息了,存儲在一個數(shù)組中。
如果是常見的查看分布,直方圖很容易繪制,這里我們通過這組數(shù)據(jù)探索下直方圖函數(shù)中各個參數(shù)的作用,以更游刃有余的繪制符合需求的直方圖。
bins參數(shù)指的是要將數(shù)據(jù)分成幾組,它接收的參數(shù)可以是整數(shù),也可以是序列,還可以是字符串,常用的是整數(shù)和序列。
通過代碼來看一下區(qū)別:
fig = plt.figure(figsize=(16,4)) pic1 = fig.add_subplot(131) plt.hist(data) plt.title("bins默認(rèn)10") pic2 = fig.add_subplot(132) plt.hist(data,bins = 15) plt.title("bins = 15") pic3 = fig.add_subplot(133) plt.hist(data,bins = [150,153,156,159,162,165,168,171,174,179]) plt.title("bins取值為序列");
能夠看出即使是同一個數(shù)據(jù)集,分組的情況不同,呈現(xiàn)出來的分布也是有區(qū)別的,所以如何分組分成幾組也是有學(xué)問的。
如果傳給參數(shù)的是序列,則表示將每個分組的臨界值都標(biāo)識出來,缺點是比較麻煩,優(yōu)點是很靈活,可以自主決定每個組的組距,每個組的組距都可以是不同的,如果分5組記得需要的臨界值是6個,參數(shù)序列中需要有6個數(shù)值。
一般繪制直方圖,都是對整個數(shù)據(jù)集繪制,有時候可能會有這樣的需求,比如我想看該校中身高在155cm到175cm之間的身高分布,那么就需要將整個數(shù)據(jù)集中符合要求的身高挑選出來繪制直方圖,實際上不用這么麻煩,用range參數(shù)就可以解決,這個參數(shù)就是指定繪圖時使用數(shù)據(jù)的范圍的,它接收的是一個元組,元組中放入兩個數(shù)值表示所取數(shù)據(jù)的范圍。
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) plt.title('range默認(rèn)None') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10,range=(155,175)) #設(shè)置范圍從155-175 plt.title('range=(155,175)');
能夠看到x軸的數(shù)值范圍發(fā)生了變化,整個直方圖的形狀也發(fā)生了變化。
這個參數(shù)的意思其實很直觀,參數(shù)名字直譯成中文就是密度的意思。普通的直方圖y軸表示的都是頻數(shù),而通過density參數(shù)可以將y軸轉(zhuǎn)化成密度刻度,這個參數(shù)接收布爾值,默認(rèn)為None。
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) #y軸表示計數(shù) plt.title('density默認(rèn)None') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10, density=True) # density=True 將原本y軸的計數(shù)轉(zhuǎn)換成概率密度的計數(shù),直方圖下面積為1 plt.title('density=True');
雖然兩個圖的形狀是完全一模一樣的,但是細(xì)看就能發(fā)現(xiàn)y軸的數(shù)值不一樣,具體的參數(shù)作用已經(jīng)以備注的形式標(biāo)注到代碼中了哦。
這里涉及到了另一個參數(shù)normed,這個參數(shù)已經(jīng)被棄用了,它的作用和density一樣,只用density就可以了,
大家對這個參數(shù)應(yīng)該不陌生,它經(jīng)常出現(xiàn),表示權(quán)重。沒錯在這里也是表示設(shè)置權(quán)重。它接收的是一個序列,序列中是數(shù)值,數(shù)值的數(shù)量和原數(shù)據(jù)集中元素的個數(shù)一致,也就是每個數(shù)值都有自己單獨的權(quán)重,我用隨機數(shù)生成了200個數(shù)值作為權(quán)重傳給參數(shù),看一下和不設(shè)置權(quán)重時有哪些變化。
x0=np.random.rand(200)#生成總和為1的200個數(shù),設(shè)置隨機權(quán)重 ratio=1/sum(x0) x1=x0*ratio fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) plt.title('weights默認(rèn)None') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10,weights=x1) plt.title('設(shè)置weights');
當(dāng)所有元素的權(quán)重都一樣時是第一幅圖的情況,而進(jìn)行權(quán)重設(shè)置后,分布情況發(fā)生了變化,而且y軸也發(fā)生了變化,不再是單純的計數(shù)。在實際工作中要謹(jǐn)慎使用權(quán)重,以符合業(yè)務(wù)需求為主哈。
如果英文比較好的人們,一眼就能看出這個參數(shù)的作用,直譯成中文就是累積的意思。到這里又出現(xiàn)了一個小問題,很多人對“累積”和“累計”又傻傻分不清了,其實這兩者還是很容易區(qū)分的,看下圖特別直觀:
是不是能直觀區(qū)分“累積”和“累計”了?
那就繼續(xù)探索cumulative參數(shù)吧,這個參數(shù)接收布爾值,默認(rèn)為False,通過代碼來看一下參數(shù)設(shè)置不同都有怎樣的結(jié)果。
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) plt.title('cumulative默認(rèn)False') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10,cumulative=True) #累積直方圖,展示累積分布 plt.title('cumulative=True');
左邊時普通的直方圖,右邊時累積直方圖,同樣可以根據(jù)實際的業(yè)務(wù)需求來進(jìn)行參數(shù)設(shè)置哦。
由于篇幅有限,對直方圖函數(shù)的介紹就先到這里啦。細(xì)心的小伙伴可能發(fā)現(xiàn)了介紹參數(shù)的順序就是按照函數(shù)官方文檔中參數(shù)的順序來的,沒錯,就是按照這個順序進(jìn)行的。但是參數(shù)中的第一個參數(shù)x卻沒有進(jìn)行介紹,是這個參數(shù)沒什么可介紹的嘛?當(dāng)然不是,這個參數(shù)也是有些小細(xì)節(jié)需要注意的,具體的講解留到下一篇文章和其他參數(shù)一起介紹啦。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03