Python?matplotlib實戰(zhàn)之箱型圖繪制
箱型圖(Box Plot),也稱為盒須圖或盒式圖,1977年由美國著名統(tǒng)計學家約翰·圖基(John Tukey)發(fā)明,是一種用作顯示一組數(shù)據(jù)分布情況的統(tǒng)計圖,因型狀如箱子而得名。
它能顯示出一組數(shù)據(jù)的最大值、最小值、中位數(shù)及上下四分位數(shù)。
箱子的頂端和底端,分別代表上下四分位數(shù)。
箱子中間的是中位數(shù)線,它將箱子一分為二。從箱子延伸出去的線條展現(xiàn)出了上下四分位數(shù)以外的數(shù)據(jù),由于這兩根延伸出去的線像是胡須,因此箱形圖也被稱為盒須圖。
箱形圖最大的優(yōu)勢是,它以一種簡單的方式,概括出一個或多個數(shù)值變量的分布,同時又不會占據(jù)太多空間。
1. 主要元素
它主要由以下五個元素組成:
- 最大值:表示數(shù)據(jù)的最大值,排除了異常值后的上限。
- 上四分位線:數(shù)據(jù)的上四分位數(shù),將數(shù)據(jù)分為四等份,處于上邊緣和中位數(shù)之間的數(shù)據(jù)。也稱為第三四分位數(shù)。
- 中位數(shù):數(shù)據(jù)的中位數(shù),將數(shù)據(jù)分為兩等份,處于上四分位數(shù)和下四分位數(shù)之間的數(shù)據(jù)。也稱為第二四分位數(shù)。
- 下四分位線:數(shù)據(jù)的下四分位數(shù),將數(shù)據(jù)分為四等份,處于中位數(shù)和下邊緣之間的數(shù)據(jù)。也稱為第一四分位數(shù)。
- 最小值:表示數(shù)據(jù)的最小值,排除了異常值后的下限。

2. 適用的場景
箱型圖適用于以下分析場景:
- 數(shù)據(jù)分布比較:比較不同組數(shù)據(jù)的分布情況。通過將多個箱型圖放在一起,可以直觀地比較它們的中位數(shù)、四分位數(shù)和離群值等信息,從而了解它們之間的差異。
- 離群值檢測:檢測數(shù)據(jù)中的離群值。離群值是與其他數(shù)據(jù)點相比明顯偏離的數(shù)據(jù)點,它們可能是數(shù)據(jù)收集或記錄過程中的異常或錯誤。箱型圖中的離群點可以幫助識別這些異常值。
- 數(shù)據(jù)中心趨勢和離散程度:通過中位數(shù)和四分位距(上四分位數(shù)與下四分位數(shù)之差)展示了數(shù)據(jù)的中心趨勢和離散程度。中位數(shù)提供了數(shù)據(jù)的中心位置,四分位距提供了數(shù)據(jù)的離散程度。
- 數(shù)據(jù)分布形狀:提供關于數(shù)據(jù)分布形狀的一些信息。例如,如果箱型圖的上下邊緣和中位數(shù)都接近,箱型圖可能顯示出對稱的分布。如果箱型圖的上邊緣比下邊緣長,中位數(shù)偏向下邊緣,可能顯示出右偏分布。
3. 不適用的場景
箱型圖不適用于以下分析場景:
- 數(shù)據(jù)樣本過小:當數(shù)據(jù)樣本過小時,箱型圖可能無法提供足夠的信息來準確描述數(shù)據(jù)的分布情況。
- 數(shù)據(jù)分布復雜:當數(shù)據(jù)分布非常復雜或包含多個峰值時,箱型圖可能無法完全捕捉到數(shù)據(jù)的特征。
- 數(shù)據(jù)缺失:如果數(shù)據(jù)中存在大量缺失值,箱型圖可能無法提供準確的分布信息。
4. 分析實戰(zhàn)
本次通過箱型圖分析我國三大產(chǎn)業(yè)對GDP的貢獻情況。
4.1. 數(shù)據(jù)來源
數(shù)據(jù)來自國家統(tǒng)計局公開的歷年數(shù)據(jù),整理好的文件從下面的地址下載:databook.top/nation/A02
使用的是其中的 A0201.csv 文件(國內生產(chǎn)總值)
fp = "d:/share/data/A0201.csv" df = pd.read_csv(fp) df

4.2. 數(shù)據(jù)清理
過濾出三大產(chǎn)業(yè)在2013年~2022年的增加值數(shù)據(jù)。
data = df[df["zb"].isin(["A020103",
"A020104",
"A020105"])].copy()
data = data[data["sj"] > 2012]
data其中,A020103,A020104,A020105 分別是三大產(chǎn)業(yè)的指標編號。
4.3. 分析結果可視化
通過箱型圖展示三大產(chǎn)業(yè)的增加值情況:
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 1, 1])
graph = ax.boxplot(
[
data[data["zb"] == "A020103"].loc[:, "value"],
data[data["zb"] == "A020104"].loc[:, "value"],
data[data["zb"] == "A020105"].loc[:, "value"],
],
vert=True,
patch_artist=True,
labels=["第一產(chǎn)業(yè)", "第二產(chǎn)業(yè)", "第三產(chǎn)業(yè)"]
)
ax.set_title("2013~2022 三大產(chǎn)業(yè)對GDP增加值(億元)")
colors = ['pink', 'lightblue', 'lightgreen']
for patch, color in zip(graph['boxes'], colors):
patch.set_facecolor(color)
plt.show()
從圖中可以看出,近10年來,第一產(chǎn)業(yè)的增加值明顯低于其他兩個產(chǎn)業(yè)。
第二第三產(chǎn)業(yè)的上下限的值相差比較大,說明增長或者下降比較明顯(看了數(shù)據(jù),是增長明顯)。
第一產(chǎn)業(yè)的中位數(shù)(紅色的橫線)偏下半部分,說明多數(shù)的年份增加值比較低;
第二產(chǎn)業(yè)的中位數(shù)(紅色的橫線)偏上半部分,說明多數(shù)的年份增加值比較高。
到此這篇關于Python matplotlib實戰(zhàn)之箱型圖繪制的文章就介紹到這了,更多相關Python箱型圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python sorted()函數(shù)的key參數(shù)使用說明
文章介紹了Python中的sort()和sorted()方法的區(qū)別及其用法,sort()是list的方法,不能對所有可迭代對象進行排序,且在原地對列表排序,無返回值,sorted()是內置函數(shù),可以對所有可迭代對象進行排序,并返回一個新的排序后的列表,文章還提供了sorted()的用法示例2025-11-11
python中json格式數(shù)據(jù)輸出的簡單實現(xiàn)方法
下面小編就為大家?guī)硪黄猵ython中json格式數(shù)據(jù)輸出的簡單實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
Django中ORM找出內容不為空的數(shù)據(jù)實例
這篇文章主要介紹了Django中ORM找出內容不為空的數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python自定義函數(shù)計算給定日期是該年第幾天的方法示例
這篇文章主要介紹了Python自定義函數(shù)計算給定日期是該年第幾天的方法,結合具體實例形式分析了Python日期時間計算相關操作技巧,需要的朋友可以參考下2019-05-05

