用python的seaborn畫(huà)數(shù)值箱型圖
一、概念介紹
箱型圖(box-plot),又稱(chēng)為箱線圖,盒型圖,盒須圖。在數(shù)據(jù)探索階段或者描述性分析過(guò)程中,我們常常用于展示多類(lèi)連續(xù)型數(shù)據(jù)的數(shù)值分布情況,便于類(lèi)間對(duì)比和快速識(shí)別異常值。
在一幅箱型圖中,一個(gè)連續(xù)數(shù)值序列構(gòu)成一個(gè)盒子,如下所示。
每一個(gè)盒子主要展示的是數(shù)據(jù)的上四分位數(shù)Q1(25%),中位數(shù)(50%),下四分位數(shù)Q3(75%)。劃分異常值的界限我們稱(chēng)為上下極限,其離Q1,Q3分別是1.5IQR(IQR=Q3-Q1,稱(chēng)作四分位距)的距離,在上下極限之外的點(diǎn),我們稱(chēng)為異常點(diǎn)。異常值在不同場(chǎng)景中受到不同的重視,如果是要研究目標(biāo)群體的薪資水平,我們常常關(guān)注中位數(shù)和IQR,而不關(guān)注異常值。
二、數(shù)據(jù)展示
借助爬蟲(chóng)技術(shù),我們?cè)谀硞€(gè)時(shí)間的boss直聘首頁(yè)隨機(jī)獲取了八個(gè)城市的三類(lèi)檢索詞(數(shù)據(jù)分析師、數(shù)據(jù)挖掘工程師、算法工程師)的職位發(fā)布信息。一共得到的excel表如下所示。
每一個(gè)表內(nèi)的數(shù)據(jù)如下:
(其中平均月薪的計(jì)算是簡(jiǎn)單地通過(guò)區(qū)間中位數(shù)*薪期/12得到,如8k-10k*16薪,則平均月薪為12000.
三、數(shù)據(jù)導(dǎo)入
只需要導(dǎo)入每一個(gè)表格中的 職位名稱(chēng) 和 平均月薪 列。
import pandas as pd city8_fullname = ['北京','重慶','武漢','深圳','南京','廣州','成都','上海'] job_type = ['數(shù)據(jù)分析師','數(shù)據(jù)挖掘工程師','算法工程師'] salary_dic = {} for i in range(len(city8_fullname)): df = pd.DataFrame(pd.read_excel('./Boss直聘數(shù)據(jù)-八個(gè)城市/Boss直聘-'+city8_fullname[i]+'.xls')) salary_dic[city8_fullname[i]] = df[['職位名稱(chēng)','平均月薪']] salary_dic[city8_fullname[i]]['城市'] = pd.Series([city8_fullname[i]]*df.shape[0]) ## 整合成畫(huà)圖需要的格式 salary = salary_dic[city8_fullname[0]] for i in range(1,8): salary = pd.concat([salary,salary_dic[city8_fullname[i]]],ignore_index="true")
得到的數(shù)據(jù)結(jié)構(gòu)為:
四、畫(huà)圖
這里,我們使用的是python語(yǔ)言,借助seaborn包完成。
import matplotlib.pyplot as plt import seaborn as sns # 中文與正負(fù)號(hào)顯示設(shè)置 plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' plt.rcParams['axes.unicode_minus'] = False # Draw plt.figure(figsize=(14,8), dpi= 100) sns.boxplot(x='城市', y='平均月薪', data=salary, hue='職位名稱(chēng)') sns.stripplot(x='城市', y='平均月薪', data=salary, color='black', size=2, jitter=1) for i in range(len(salary['城市'].unique())-1): plt.vlines(i+.5, 10, 45, linestyles='solid', colors='gray', alpha=0.2) plt.title('八大城市對(duì)口專(zhuān)業(yè)薪資分布', fontsize=20) plt.legend(title='職位類(lèi)型') plt.xticks(fontsize=14) plt.xlabel('城市',fontsize=16) plt.ylabel('平均月薪',fontsize=16) plt.yticks(fontsize=14) plt.savefig(r'./繪圖結(jié)果/薪資-薪資分布-箱線圖.png')
sns.stripplot------用于畫(huà)分布散點(diǎn)圖(如果是大樣本的話不適用,但有一種一半密度一半箱型的類(lèi)別,可以避免散點(diǎn)覆蓋的情況 )
plt.vlines-----畫(huà)輔助線
hue-----可以理解為有多少組,在這里相當(dāng)于出去城市外的第二個(gè)維度的分類(lèi)。
結(jié)果圖為:
上圖中,我們是在箱型圖的基礎(chǔ)上加了散點(diǎn)的,目的在于了解各城市薪資的數(shù)值集中分布情況。
總結(jié)
到此這篇關(guān)于用python的seaborn畫(huà)數(shù)值箱型圖的文章就介紹到這了,更多相關(guān)python seaborn箱型圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章

Python使用描述器實(shí)現(xiàn)ORM模型的方法詳解

Python實(shí)現(xiàn)的樸素貝葉斯算法經(jīng)典示例【測(cè)試可用】

Python編程實(shí)現(xiàn)雙擊更新所有已安裝python模塊的方法

詳解Python如何實(shí)現(xiàn)Excel數(shù)據(jù)讀取和寫(xiě)入

PyQt5+QtChart實(shí)現(xiàn)繪制區(qū)域圖

Python中的上下文管理器相關(guān)知識(shí)詳解

python庫(kù)umap有效地揭示高維數(shù)據(jù)的結(jié)構(gòu)和模式初探