Python可视化:Seaborn(二)
Seaborn是一個很棒的可視化庫,尤其是當數據維度很大時,它可以讓我們用最少的代碼去繪制一些描述性統計的圖,便于找尋各維度變量之間的特征。
繼上篇Python可視化:Seaborn(一),分享過用Seaborn做Distribution Visualization,本篇我們將分享用Seaborn做Categorial Visualization,包括其中涉及的Stripplot & Swarmplot,Boxplot & Violinplot,Barplot & Pointplot,以及抽象化的Factorplot。
我們此處結合科賽網上公開的Iris鳶尾花數據集進行演示說明。
文中所有完整源代碼均可通過K-Lab在線數據分析協作工具復現。它涵蓋了Python、R等主流語言,完成了包括Seaborn、Pandas、Numpy等90%以上數據分析&挖掘相關庫的部署,幫助數據人才專注數據分析本身,提高效率。Iris鳶尾花數據集:是常用的分類實驗數據集,由Fisher, 1936收集整理。是一類多重變量分析的數據集。共包含150個數據集,分為3類,每類50個數據,每個數據包含4個屬性。可通過花萼長度(sepal_length),花萼寬度(sepal_width),花瓣長度(petal_length),花瓣寬度(petal_width)4個屬性預測鳶尾花卉屬于(Setosa,Versicolour,Virginica)三個種類中的哪一類。導入庫
import warnings warnings.filterwarnings("ignore")?import pandas as pd?import numpy as np?import matplotlib.pyplot as plt %matplotlib inline?import seaborn as snsStripplot
Stripplot的本質就是把數據集中具有Quantitative屬性的變量按照類別去做散點圖(Scatterplot)。
我們將紙鳶花數據集中不同種類花的Sepal Length做Stripplot可視化。
plt.figure(1,figsize=(12,6))?plt.subplot(1,2,1)?sns.stripplot(x='species',y='sepal_length',data=iris) #stripplot?plt.title('Striplot of sepal length of Iris species')with sns.axes_style("whitegrid"): # 這個是臨時設置樣式的命令,如果不寫,則按默認格式'darkgrid'進行繪制?plt.subplot(1,2,2)?plt.title('Striplot of sepal length of Iris species') sns.stripplot(x='species',y='sepal_length',data=iris,jitter=True) # jitterplot?plt.show()上邊左側的圖片便是在默認風格下用Stripplot繪制的散點圖。在很多情況下,Stripplot中的點會重疊,使得我們不容易看出點的分布情況。一個簡單的解決辦法就是用在Stripplot的基礎上繪制抖動圖(jitterplot),僅沿著類別坐標軸的方向去隨機微調整點的位置,顯示出分布情況。
Swarmplot
另一個解決Stripplot中點重疊的辦法就是繪制Swarmplot,它的本質就是用通過算法,在類別坐標軸的方向上去‘延展’繪制這些原本重合的點。 我們將紙鳶花數據集中不同種類花的Petal Length和Petal width做Swarmplot可視化。
Boxplot
箱形圖,主要包含六個數據節點,將一組數據從大到小排列,分別計算出上邊緣,上四分位數Q3,中位數,下四分位數Q1,下邊緣,還有異常值。 下面將紙鳶花數據集中的四個變量sepal_length, sepal_width, petal_length和petal_width做箱形圖可視化。
Violinplot
Violinplot相當于結合了箱形圖與核密度圖,更好地展現出數據的量化形態。
Violinplot用Kernel Density Estimate去更好地描述了quantitative變量的分布。
與此同時,也可以組合Swarmplot和Boxplot或Violinplot去描述Quantitative變量。用鳶尾花數據集展示如下:
Barplot
Barplot主要是展現在分類中的Quantitative變量的平均值情況,并且用了Boostrapping算法計算了估計值的置信區間和Error bar.用鳶尾花數據集。
plt.figure(1,figsize=(12,12))for i in range(4): with sns.axes_style(axes_style[i]):#設置axes_style?sns.set_context(context[i]) # 設置context style,默認為notebook,除此之外還有paper,talk,poster plt.subplot(2,2,i+1)?plt.title(str(var[i])+ ' in Iris species') sns.barplot(x='species',y=var[i],data=iris)?plt.show()Countplot
如果想知道在每個類別下面有多少個觀察值,用Countplot就可以,相當于是做一個Observation Counts,用鳶尾花數據集展示如下:
Pointplot
Pointplot相當于是對Barplot做了一個橫向延伸,一方面,用Point Estimate和Confidence Level去展示Barplot的內容;另一方面,當每一個主類別下面有更細分的Sub-Category的時候,Pointplot可以便于觀察不同Sub-Category在各主類別之間的聯系。展示如下:
Factorplot
Factorplot可以說是Seaborn做Category Visualization的精髓,前面講的這些Plot都可以說是Factorplot的具體展示。我們可以用PariGrid去實現對多個類別的數值特征用同一種Plot做可視化。
在這個數據集中,Quantitative的變量主要有房屋的面積Area,每平米單價Price,以及房屋總價Tprice。
科賽網(kesci.com)是聚合數據人才和行業問題的在線社區,重點打造的K-Lab在線數據分析協作平臺,為數據工作者的學習與工作帶來全新的體驗。
總結
以上是生活随笔為你收集整理的Python可视化:Seaborn(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dpkg: 处理软件包 update-n
- 下一篇: mysql优化查询