用python的seaborn畫數值箱型圖
一、概念介紹
箱型圖(box-plot),又稱為箱線圖,盒型圖,盒須圖。在數據探索階段或者描述性分析過程中,我們常常用於展示多類連續型數據的數值分佈情況,便於類間對比和快速識別異常值。
在一幅箱型圖中,一個連續數值序列構成一個盒子,如下所示。
每一個盒子主要展示的是數據的上四分位數Q1(25%),中位數(50%),下四分位數Q3(75%)。劃分異常值的界限我們稱為上下極限,其離Q1,Q3分別是1.5IQR(IQR=Q3-Q1,稱作四分位距)的距離,在上下極限之外的點,我們稱為異常點。異常值在不同場景中受到不同的重視,如果是要研究目標群體的薪資水平,我們常常關註中位數和IQR,而不關註異常值。
二、數據展示
借助爬蟲技術,我們在某個時間的boss直聘首頁隨機獲取瞭八個城市的三類檢索詞(數據分析師、數據挖掘工程師、算法工程師)的職位發佈信息。一共得到的excel表如下所示。
每一個表內的數據如下:
(其中平均月薪的計算是簡單地通過區間中位數*薪期/12得到,如8k-10k*16薪,則平均月薪為12000.
三、數據導入
隻需要導入每一個表格中的 職位名稱 和 平均月薪 列。
import pandas as pd city8_fullname = ['北京','重慶','武漢','深圳','南京','廣州','成都','上海'] job_type = ['數據分析師','數據挖掘工程師','算法工程師'] salary_dic = {} for i in range(len(city8_fullname)): df = pd.DataFrame(pd.read_excel('./Boss直聘數據-八個城市/Boss直聘-'+city8_fullname[i]+'.xls')) salary_dic[city8_fullname[i]] = df[['職位名稱','平均月薪']] salary_dic[city8_fullname[i]]['城市'] = pd.Series([city8_fullname[i]]*df.shape[0]) ## 整合成畫圖需要的格式 salary = salary_dic[city8_fullname[0]] for i in range(1,8): salary = pd.concat([salary,salary_dic[city8_fullname[i]]],ignore_index="true")
得到的數據結構為:
四、畫圖
這裡,我們使用的是python語言,借助seaborn包完成。
import matplotlib.pyplot as plt import seaborn as sns # 中文與正負號顯示設置 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='職位名稱') 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('八大城市對口專業薪資分佈', fontsize=20) plt.legend(title='職位類型') plt.xticks(fontsize=14) plt.xlabel('城市',fontsize=16) plt.ylabel('平均月薪',fontsize=16) plt.yticks(fontsize=14) plt.savefig(r'./繪圖結果/薪資-薪資分佈-箱線圖.png')
sns.stripplot——用於畫分佈散點圖(如果是大樣本的話不適用,但有一種一半密度一半箱型的類別,可以避免散點覆蓋的情況 )
plt.vlines—–畫輔助線
hue—–可以理解為有多少組,在這裡相當於出去城市外的第二個維度的分類。
結果圖為:
上圖中,我們是在箱型圖的基礎上加瞭散點的,目的在於瞭解各城市薪資的數值集中分佈情況。
總結
到此這篇關於用python的seaborn畫數值箱型圖的文章就介紹到這瞭,更多相關python seaborn箱型圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python畫圖時給圖中的點加標簽和plt.text的使用
- python繪制發散型柱狀圖+誤差陰影時間序列圖+雙坐標系時間序列圖+繪制金字塔圖
- python 繪制斜率圖進行對比分析
- python可視化分析繪制散點圖和邊界氣泡圖
- Python+matplotlib實現繪制等高線圖示例詳解