Matplotlib實(shí)戰(zhàn)之直方圖繪制詳解
直方圖,又稱質(zhì)量分布圖,用于表示數(shù)據(jù)的分布情況,是一種常見的統(tǒng)計(jì)圖表。
一般用橫軸表示數(shù)據(jù)區(qū)間,縱軸表示分布情況,柱子越高,則落在該區(qū)間的數(shù)量越大。
構(gòu)建直方圖時(shí),首先首先就是對(duì)數(shù)據(jù)劃分區(qū)間,通俗的說即是劃定有幾根柱子(比如,1980年~2020年的數(shù)據(jù),每5年劃分一個(gè)區(qū)間的話,共8個(gè)區(qū)間)。
接著,對(duì)落在每個(gè)區(qū)間的數(shù)值進(jìn)行統(tǒng)計(jì)計(jì)算, 最后,繪制矩形,高度由每個(gè)區(qū)間的統(tǒng)計(jì)結(jié)果決定。
直方圖與柱狀圖看似相像,實(shí)則完全不同。
前者反映數(shù)據(jù)分布情況,后者則不具備此功能,只能對(duì)數(shù)值進(jìn)行比較。
也就是說,柱狀圖是離散的因此柱子間有空隙;但直方圖的數(shù)據(jù)是連續(xù)的數(shù)值變量,因此柱子間是沒有空隙的。
1. 主要元素
直方圖的主要元素包括:
- 橫軸:表示數(shù)據(jù)的取值范圍或分組區(qū)間。
- 縱軸:表示該區(qū)間內(nèi)數(shù)據(jù)的頻率或數(shù)量。
- 柱狀條高度:表示每個(gè)區(qū)間內(nèi)數(shù)據(jù)的頻率或數(shù)量,柱狀條的高度代表該區(qū)間內(nèi)數(shù)據(jù)的數(shù)量多少。
- 柱狀條面積:表示不同區(qū)間內(nèi)數(shù)據(jù)的總和,有時(shí)候面積是無(wú)意義的,只看高度。
2. 適用的場(chǎng)景
直方圖適用于以下分析場(chǎng)景:
- 數(shù)據(jù)分布分析:直方圖可以幫助我們了解數(shù)據(jù)的分布情況,包括數(shù)據(jù)的中心趨勢(shì)、離散程度和偏斜程度等。通過觀察直方圖的形狀,我們可以判斷數(shù)據(jù)是正態(tài)分布、偏態(tài)分布還是有其他特殊的分布形式。
- 異常檢測(cè):直方圖可以幫助我們識(shí)別出數(shù)據(jù)中的異常情況。通過觀察直方圖中的離群點(diǎn)或異常值,我們可以發(fā)現(xiàn)數(shù)據(jù)中的異常情況,從而進(jìn)行數(shù)據(jù)清洗和異常檢測(cè)。
- 數(shù)據(jù)預(yù)處理:直方圖可以指導(dǎo)我們選擇合適的數(shù)據(jù)預(yù)處理方法。通過觀察直方圖,我們可以了解數(shù)據(jù)的分布范圍和形態(tài),從而決定是否需要對(duì)數(shù)據(jù)進(jìn)行歸一化、標(biāo)準(zhǔn)化或?qū)?shù)變換等預(yù)處理操作。
- 數(shù)據(jù)比較:直方圖可以幫助我們比較不同數(shù)據(jù)集之間的差異。通過繪制多個(gè)直方圖并進(jìn)行對(duì)比,我們可以觀察到不同數(shù)據(jù)集之間的分布差異,從而進(jìn)行數(shù)據(jù)分析和解釋。
3. 不適用的場(chǎng)景
直方圖可能不適用于以下分析場(chǎng)景:
- 時(shí)間序列分析:直方圖通常用于表示數(shù)據(jù)的分布情況,而對(duì)于時(shí)間序列數(shù)據(jù),直方圖無(wú)法展示數(shù)據(jù)隨時(shí)間變化的趨勢(shì)和模式。
- 數(shù)據(jù)關(guān)聯(lián)分析:直方圖無(wú)法直接展示數(shù)據(jù)之間的相關(guān)性或關(guān)聯(lián)性。
- 多維數(shù)據(jù)分析:直方圖主要適用于一維數(shù)據(jù)的分析,無(wú)法直接展示多維數(shù)據(jù)的分布情況。
- 數(shù)據(jù)模型擬合:直方圖可以展示數(shù)據(jù)的分布情況,但無(wú)法直接擬合數(shù)據(jù)的概率分布或模型。
- 數(shù)據(jù)聚類分析:直方圖無(wú)法直接展示數(shù)據(jù)的聚類情況,無(wú)法將數(shù)據(jù)點(diǎn)分組或分類。
4. 分析實(shí)戰(zhàn)
本次準(zhǔn)備用直方圖統(tǒng)計(jì)下某個(gè)年度我們進(jìn)出口總額的分布情況。
4.1. 數(shù)據(jù)來(lái)源
這次選用國(guó)家統(tǒng)計(jì)局公開的對(duì)外經(jīng)濟(jì)貿(mào)易數(shù)據(jù):databook.top/nation/A06
fp = "d:/share/A06050101.csv" df = pd.read_csv(fp) df
4.2. 數(shù)據(jù)清理
數(shù)據(jù)中有很多年份的數(shù)據(jù)為0,也就是有很多的缺失值。
所以,只選取了2021年與亞洲各國(guó)的進(jìn)出口總額數(shù)據(jù)來(lái)分析,
其中有2個(gè)數(shù)據(jù)在分析繪圖前需要清理,一個(gè)是中國(guó)同亞洲其他國(guó)家(地區(qū))進(jìn)出口總額(萬(wàn)美元),與其他值差別很大,所以清理;另一個(gè)是中國(guó)同亞洲進(jìn)出口總額(萬(wàn)美元),這是個(gè)匯總數(shù)據(jù),也清理了。
data = df[(df["sj"] == 2021) & (df["zb"] != "A060501011E") & (df["zb"] != "A0605010101")].copy() #原始數(shù)值太大,單位換成(億美元) data["value"] = data["value"] / 10000 data.head()
一共有48條數(shù)據(jù),這是前5條。
4.3. 分析結(jié)果可視化
繪制直方圖比較簡(jiǎn)單,核心是兩個(gè)參數(shù):
- **x **參數(shù):一個(gè)列表,也就是這次示例中就是各個(gè)亞洲國(guó)家的進(jìn)出口總額
- **bins **參數(shù):設(shè)置數(shù)據(jù)分成幾組,直方圖會(huì)統(tǒng)計(jì)每個(gè)分組中的數(shù)據(jù)個(gè)數(shù)
plt.hist(data["value"].tolist(), bins=10) plt.title("中國(guó)與亞洲各國(guó)進(jìn)出口總額(億美元) 分布") plt.show()
上面繪圖時(shí),分了10個(gè)組。(可以試試調(diào)整分組個(gè)數(shù),看看不同的圖形效果)
從圖中可以看出,2021年,亞洲各國(guó)與中國(guó)的進(jìn)出口總額在 0~300(億美元)左右的國(guó)家最多,有30多個(gè);
還有2,3個(gè)國(guó)家與中國(guó)的進(jìn)出口總額甚至超過了3500億美元。
以上就是Matplotlib實(shí)戰(zhàn)之直方圖繪制詳解的詳細(xì)內(nèi)容,更多關(guān)于Matplotlib直方圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法
這篇文章主要給大家介紹了關(guān)于Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法,Python生成(導(dǎo)出)csv文件其實(shí)很簡(jiǎn)單,我們一般可以用csv模塊或者pandas庫(kù)來(lái)實(shí)現(xiàn),需要的朋友可以參考下2023-07-07python獲取全國(guó)最新省市區(qū)數(shù)據(jù)并存入表實(shí)例代碼
我們?cè)陂_發(fā)中經(jīng)常會(huì)遇到獲取省市區(qū)等信息的時(shí)候,下面這篇這篇文章主要給大家介紹了關(guān)于python獲取全國(guó)最新省市區(qū)數(shù)據(jù)并存入表的相關(guān)資料,需要的朋友可以參考下2021-08-08python接口調(diào)用已訓(xùn)練好的caffe模型測(cè)試分類方法
今天小編就為大家分享一篇python接口調(diào)用已訓(xùn)練好的caffe模型測(cè)試分類方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-08-08Python-while 計(jì)算100以內(nèi)奇數(shù)和的方法
今天小編就為大家分享一篇Python-while 計(jì)算100以內(nèi)奇數(shù)和的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-06-06Django事務(wù)transaction的使用以及多個(gè)裝飾器問題
這篇文章主要介紹了Django事務(wù)transaction的使用以及多個(gè)裝飾器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08python如何修改PYTHONPATH環(huán)境變量
這篇文章主要介紹了python如何修改PYTHONPATH環(huán)境變量問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Python3 循環(huán)語(yǔ)句(for、while、break、range等)
這篇文章主要介紹了Python3 循環(huán)語(yǔ)句(for、while、break、range等),大家把下面的文章看完就基本上就可以了解了python的循環(huán)實(shí)現(xiàn)方式了2017-11-11Python selenium如何設(shè)置等待時(shí)間
這篇文章主要為大家詳細(xì)介紹了Python selenium如何設(shè)置等待時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09