日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python可视化:Seaborn(二)

發(fā)布時間:2025/3/20 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python可视化:Seaborn(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文由 保一雄@科賽網 數(shù)據(jù)分析師 原創(chuàng)。


Seaborn是一個很棒的可視化庫,尤其是當數(shù)據(jù)維度很大時,它可以讓我們用最少的代碼去繪制一些描述性統(tǒng)計的圖,便于找尋各維度變量之間的特征。

繼上篇Python可視化:Seaborn(一),分享過用Seaborn做Distribution Visualization,本篇我們將分享用Seaborn做Categorial Visualization,包括其中涉及的Stripplot & Swarmplot,Boxplot & Violinplot,Barplot & Pointplot,以及抽象化的Factorplot。


我們此處結合科賽網上公開的Iris鳶尾花數(shù)據(jù)集進行演示說明。

文中所有完整源代碼均可通過K-Lab在線數(shù)據(jù)分析協(xié)作工具復現(xiàn)。它涵蓋了Python、R等主流語言,完成了包括Seaborn、Pandas、Numpy等90%以上數(shù)據(jù)分析&挖掘相關庫的部署,幫助數(shù)據(jù)人才專注數(shù)據(jù)分析本身,提高效率。Iris鳶尾花數(shù)據(jù)集:是常用的分類實驗數(shù)據(jù)集,由Fisher, 1936收集整理。是一類多重變量分析的數(shù)據(jù)集。共包含150個數(shù)據(jù)集,分為3類,每類50個數(shù)據(jù),每個數(shù)據(jù)包含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 sns


Stripplot

Stripplot的本質就是把數(shù)據(jù)集中具有Quantitative屬性的變量按照類別去做散點圖(Scatterplot)。

我們將紙鳶花數(shù)據(jù)集中不同種類花的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,它的本質就是用通過算法,在類別坐標軸的方向上去‘延展’繪制這些原本重合的點。 我們將紙鳶花數(shù)據(jù)集中不同種類花的Petal Length和Petal width做Swarmplot可視化。

plt.figure(1,figsize=(12,6))?plt.subplot(1,2,1)?sns.swarmplot(x='species',y='petal_length',data=iris)?with sns.axes_style("ticks"): # 這次使用了ticks風格?plt.subplot(1,2,2)?sns.swarmplot(x='species',y='petal_width',data=iris)?plt.show()



Boxplot

箱形圖,主要包含六個數(shù)據(jù)節(jié)點,將一組數(shù)據(jù)從大到小排列,分別計算出上邊緣,上四分位數(shù)Q3,中位數(shù),下四分位數(shù)Q1,下邊緣,還有異常值。 下面將紙鳶花數(shù)據(jù)集中的四個變量sepal_length, sepal_width, petal_length和petal_width做箱形圖可視化。

var = ['sepal_length','sepal_width','petal_length','petal_width']?axes_style = ['ticks','white','whitegrid', 'dark']?fig = plt.figure(1,figsize=(12,12))for i in range(4): with sns.axes_style(axes_style[i]): # 將除了默認的darkgrid之外的樣式都展現(xiàn)一遍?plt.subplot(2,2,i+1) sns.boxplot(x='species',y=var[i],data=iris)?plt.show()



Violinplot

Violinplot相當于結合了箱形圖與核密度圖,更好地展現(xiàn)出數(shù)據(jù)的量化形態(tài)。

context= ['notebook','paper','talk','poster']?axes_style = ['ticks','white','whitegrid', 'dark']?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.violinplot(x='species',y=var[i],data=iris)?plt.show()


Violinplot用Kernel Density Estimate去更好地描述了quantitative變量的分布。


與此同時,也可以組合Swarmplot和Boxplot或Violinplot去描述Quantitative變量。用鳶尾花數(shù)據(jù)集展示如下:

context= ['notebook','paper','talk','poster']?axes_style = ['ticks','white','whitegrid', 'dark']?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? plt.subplot(2,2,i+1)?plt.title(str(var[i])+ ' in Iris species')?sns.swarmplot(x='species', y=var[i], data=iris, color="w", alpha=.5)? sns.violinplot(x='species', y=var[i], data=iris, inner=None) if i%2 ==0 \ else sns.boxplot(x='species', y=var[i], data=iris) # 分別用swarmplot+violinplot 和swarmplot + boxplot?plt.show()


Barplot

Barplot主要是展現(xiàn)在分類中的Quantitative變量的平均值情況,并且用了Boostrapping算法計算了估計值的置信區(qū)間和Error bar.用鳶尾花數(shù)據(jù)集。

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,用鳶尾花數(shù)據(jù)集展示如下:

plt.figure(figsize=(5,5)) sns.countplot(y="species", data=iris) # 設置y='species',將countplot水平放置?plt.title('Iris species count')?plt.show()


Pointplot

Pointplot相當于是對Barplot做了一個橫向延伸,一方面,用Point Estimate和Confidence Level去展示Barplot的內容;另一方面,當每一個主類別下面有更細分的Sub-Category的時候,Pointplot可以便于觀察不同Sub-Category在各主類別之間的聯(lián)系。展示如下:

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.pointplot(x='species',y=var[i],data=iris)?plt.show()


Factorplot

Factorplot可以說是Seaborn做Category Visualization的精髓,前面講的這些Plot都可以說是Factorplot的具體展示。我們可以用PariGrid去實現(xiàn)對多個類別的數(shù)值特征用同一種Plot做可視化。

sns.set(style="ticks") g = sns.PairGrid(iris, x_vars = ['sepal_length','sepal_width','petal_length','petal_width'], y_vars = 'species', aspect=0.75,size=4) # 設置間距和圖片大小 g.map(sns.violinplot,palette='pastel')?plt.show()


在這個數(shù)據(jù)集中,Quantitative的變量主要有房屋的面積Area,每平米單價Price,以及房屋總價Tprice。


科賽網(kesci.com)是聚合數(shù)據(jù)人才和行業(yè)問題的在線社區(qū),重點打造的K-Lab在線數(shù)據(jù)分析協(xié)作平臺,為數(shù)據(jù)工作者的學習與工作帶來全新的體驗。


總結

以上是生活随笔為你收集整理的Python可视化:Seaborn(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。