日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【Python】箱图boxplot--统计数据、观察数据利器

發(fā)布時間:2025/3/12 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】箱图boxplot--统计数据、观察数据利器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文系統(tǒng)詳解利用python中seaborn.boxplot繪制箱圖boxplot。 seaborn.boxplot是matplotlib.pyplot.boxplot的封裝版, 更個性化的設(shè)置請研究matplotlib.pyplot.boxplot

本文將了解到什么?

1、數(shù)據(jù)集準備及箱圖簡介 2、seaborn.boxplot箱圖外觀設(shè)置 默認參數(shù)繪制箱圖箱圖異常值屬性設(shè)置 異常值關(guān)閉顯示異常值marker大小設(shè)置異常值marker形狀、填充色、輪廓設(shè)置 箱圖上下橫線屬性設(shè)置 上下橫線關(guān)閉上下橫線顏色、線型、線寬等設(shè)置 箱圖上下須線屬性設(shè)置 箱圖箱子設(shè)置箱子設(shè)置缺口箱子不填充顏色 箱子外框、內(nèi)部填充色 箱圖中位數(shù)線屬性設(shè)置 箱圖均值屬性設(shè)置 均值使用點顯示、設(shè)置點形狀、填充色均值使用線顯示 、線型、顏色設(shè)置 箱圖中所有線屬性設(shè)置 3、seaborn.boxplot分組箱圖 分組繪圖(方法一) 分組繪圖(方法二) 箱子顏色設(shè)置 設(shè)置箱子顏色設(shè)置箱子顏色飽和度 箱子間距設(shè)置 每個小組再按子組繪圖 按順序繪制箱圖

正文開始啦

一個箱圖的主要組成原件

線圖用來展現(xiàn)數(shù)據(jù)的分布,能直觀的展示數(shù)據(jù)的關(guān)鍵指標(biāo)(如下四分位數(shù)、上四分位數(shù)、中位數(shù)、最大值、最小值、離散點/異常值點);箱線圖可直觀展示不同組數(shù)據(jù)的差異;下面詳細介紹python中matplotlib及seaborn庫繪制箱圖。

1、數(shù)據(jù)集準備及箱圖簡介

還是使用鳶尾花數(shù)據(jù)集iris,iris詳細介紹請戳:Python可視化|matplotlib10-繪制散點圖scatter

import?matplotlib.pyplot?as?plt import?numpy?as?np import?pandas?as?pd from?pandas?import?Series,DataFrame import?seaborn?as?sns import?palettable from?sklearn?import?datasets?plt.rcParams['font.sans-serif']=['SimHei']??#?用于顯示中文 plt.rcParams['axes.unicode_minus']?=?False??#?用于顯示中文iris=datasets.load_iris() x,?y?=?iris.data,?iris.target pd_iris?=?pd.DataFrame(np.hstack((x,?y.reshape(150,?1))),columns=['sepal?length(cm)','sepal?width(cm)','petal?length(cm)','petal?width(cm)','class']?)

查看數(shù)據(jù)集樣子??pd_iris["sepal width(cm)"]簡單統(tǒng)計,后文主要使用該列數(shù)據(jù)集繪圖

pd_iris["sepal?width(cm)"].describe()#以上各個值其實都可以使用describe函數(shù)查看

count ? ?150.000000
mean ? ? ? 3.054000
std ? ? ? ?0.433594
min ? ? ? ?2.000000
25% ? ? ? ?2.800000(下四分位數(shù),25% 的數(shù)據(jù)小于等于此值。)
50% ? ? ? ?3.000000(中位數(shù),50% 的數(shù)據(jù)小于等于此值。)
75% ? ? ? ?3.300000(上四分位數(shù),75% 的數(shù)據(jù)小于等于此值。)
max ? ? ? ?4.400000
Name: sepal width(cm), dtype: float64

上面注釋部分很好的解釋了下面箱圖中四分位數(shù)的含義??


2、seaborn.boxplot箱圖外觀設(shè)置

  • 默認參數(shù)繪制箱圖

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],#傳入一組數(shù)據(jù)orient='v'#箱子垂直顯示,默認為'h'水平顯示) plt.show()
  • 箱圖異常值屬性設(shè)置

異常值關(guān)閉顯示

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],showfliers=False,#異常值關(guān)閉顯示) plt.show()

異常值marker大小設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],orient='v',fliersize=15,#設(shè)置離散值marker大小,默認為5) plt.show()

異常值marker形狀、填充色、輪廓設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],orient='v',flierprops?=?{'marker':'o',#異常值形狀'markerfacecolor':'red',#形狀填充色'color':'black',#形狀外廓顏色},) plt.show()
  • 箱圖上下橫線屬性設(shè)置

上下橫線關(guān)閉

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],showcaps=False,#上下橫線關(guān)閉) plt.show()

上下橫線顏色、線型、線寬等設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],capprops={'linestyle':'--','color':'red'},#設(shè)置上下橫線屬性) plt.show()
  • 箱圖上下須線屬性設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],whiskerprops={'linestyle':'--','color':'red'},#設(shè)置上下須屬性) plt.show()
  • 箱圖箱子設(shè)置

箱子設(shè)置缺口

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],orient='v',notch=True,#箱子設(shè)置缺口) plt.show()

箱子不填充顏色

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],orient='v',color='white',#箱子不填充) plt.show()

箱子外框、內(nèi)部填充色

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],boxprops?=?{'color':'red',#箱子外框'facecolor':'pink'#箱子填充色},#設(shè)置箱子屬性) plt.show()
  • 箱圖中位數(shù)線屬性設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],medianprops?=?{'linestyle':'--','color':'red'},#設(shè)置中位數(shù)線線型及顏色) plt.show()
  • **箱圖均值屬性設(shè)置?**

均值使用點顯示、設(shè)置點形狀、填充色

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],showmeans=True,#箱圖顯示均值,meanprops?=?{'marker':'D','markerfacecolor':'red'},#設(shè)置均值屬性) plt.show()

均值使用線顯示?、線型、顏色設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],showmeans=True,#箱圖顯示均值,meanline=True,#顯示均值線meanprops?=?{'linestyle':'--','color':'red'},#設(shè)置均值線屬性) plt.show()
  • 箱圖中所有線屬性設(shè)置

plt.figure(dpi=100) sns.boxplot(y=pd_iris["sepal?width(cm)"],orient='v',linewidth=8#設(shè)置箱子等線的寬度) plt.show()

3、seaborn.boxplot分組箱圖

  • 分組繪圖(方法一)

plt.figure(dpi=100) class_name=[iris.target_names[0]?if?i==0.0?else?iris.target_names[1]?if?i==1.0?else?iris.target_names[2]?for?i?in?pd_iris['class']] sns.boxplot(x=class_name,#按照pd_iris["sepal?width(cm)"]分組,即按照每種鳶尾花('setosa',?'versicolor',?'virginica')分組繪圖y=pd_iris["sepal?width(cm)"],#繪圖數(shù)據(jù)orient='v') plt.show()
  • 分組繪圖(方法二)

plt.figure(dpi=100) sns.boxplot(x='class',y='sepal?width(cm)',data=pd_iris,#data的作用就是x,y每次不需要輸入pd_irisorient='v') plt.show()
  • 箱子顏色設(shè)置

設(shè)置箱子顏色

import?palettable plt.figure(dpi=100) sns.boxplot(x='class',y='sepal?width(cm)',data=pd_iris,orient='v',palette=palettable.tableau.TrafficLight_9.mpl_colors,#設(shè)置每個箱子顏色) plt.show()

設(shè)置箱子顏色飽和度

import?palettable plt.figure(dpi=100) sns.boxplot(x='class',y='sepal?width(cm)',data=pd_iris,orient='v',palette=palettable.tableau.TrafficLight_9.mpl_colors,saturation=0.3,#設(shè)置顏色飽和度) plt.show()
  • 箱子間距設(shè)置

import?palettable plt.figure(dpi=100) sns.boxplot(x='class',y='sepal?width(cm)',data=pd_iris,orient='v',palette=palettable.tableau.TrafficLight_9.mpl_colors,saturation=0.3,#設(shè)置顏色飽和度width=1.0,#設(shè)置箱子之間距離,為1時,每個箱子之間距離為0) plt.show()
  • 每個小組再按子組繪圖

plt.figure(dpi=100) class_name=[iris.target_names[0]?if?i==0.0?else?iris.target_names[1]?if?i==1.0?else?iris.target_names[2]?for?i?in?pd_iris['class']] sns.boxplot(x=class_name,y=pd_iris['sepal?width(cm)'],hue=pd_iris['petal?width(cm)'],#每類按照子類分組:上圖三類再按照'sepal width(cm)'分組繪圖orient='v') plt.show()
  • 按順序繪制箱圖

plt.figure(dpi=100) class_name=[iris.target_names[0]?if?i==0.0?else?iris.target_names[1]?if?i==1.0?else?iris.target_names[2]?for?i?in?pd_iris['class']] sns.boxplot(x=class_name,y=pd_iris["sepal?width(cm)"],hue=pd_iris['petal?width(cm)'],order=["virginica",?"versicolor",?"setosa"],#設(shè)置箱子的顯示順序hue_order=sorted(list(pd_iris['petal?width(cm)'].unique())),#設(shè)置每個子類中箱子的顯示順序,此處設(shè)置從小到大排序orient='v') plt.show()

4、參考資料

  • 以上涉及到單顏色設(shè)置,詳細見:Python可視化|matplotlib05-內(nèi)置單顏色(一);Python可視化|matplotlib06-外部單顏色(二);

  • 涉及到colormap設(shè)置,詳細見:Python可視化|matplotlib07-自帶顏色條Colormap(三);Python可視化|08-Palettable庫中顏色條Colormap(四)

  • 涉及到marker及l(fā)inestyle設(shè)置,詳細見:Python可視化|matplotlib03-一文掌握marker和linestyle使用

  • https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html?highlight=boxplot#matplotlib.pyplot.boxplot

  • http://seaborn.pydata.org/generated/seaborn.boxplot.html#seaborn.boxplot

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機器學(xué)習(xí)課程》視頻課黃海廣老師《機器學(xué)習(xí)課程》711頁完整版課件

本站qq群955171419,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【Python】箱图boxplot--统计数据、观察数据利器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。