自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

終于有人將Seaborn可視化講明白了

大數(shù)據(jù) 數(shù)據(jù)可視化
Seaborn是一種開源的數(shù)據(jù)可視化工具,它在Matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝,因此可以進(jìn)行更復(fù)雜的圖形設(shè)計(jì)和輸出。

[[415432]]

本文轉(zhuǎn)載自微信公眾號(hào)「數(shù)倉寶貝庫」,作者王愷 等。轉(zhuǎn)載本文請(qǐng)聯(lián)系數(shù)倉寶貝庫公眾號(hào)。

Seaborn是一種開源的數(shù)據(jù)可視化工具,它在Matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝,因此可以進(jìn)行更復(fù)雜的圖形設(shè)計(jì)和輸出。Seaborn是Matplotlib的重要補(bǔ)充,可以自主設(shè)置在Matplotlib中被默認(rèn)的各種參數(shù),而且它能高度兼容NumPy與Pandas數(shù)據(jù)結(jié)構(gòu)以及Scipy與statsmodels等統(tǒng)計(jì)模式。Seaborn已集成在Anaconda中,無須再次安裝。

01關(guān)系圖

關(guān)系圖能夠直觀地展示數(shù)據(jù)變量之間的關(guān)系以及這些關(guān)系如何依賴于其他變量,Seaborn中常用的繪制數(shù)據(jù)關(guān)系圖的函數(shù)是relplot(),其語法格式如下:

  1. seaborn.relplot(*[, x, y, hue, size, style, data, kind, …]) 

參數(shù)說明如下:

  • data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型可以是pandas.DataFrame對(duì)象、numpy.ndarray數(shù)組、映射或序列類型等。
  • x和y是參數(shù)data中的鍵或向量,指定關(guān)系圖中x軸和y軸的變量。
  • hue也是data中的鍵或向量,根據(jù)hue變量對(duì)數(shù)據(jù)進(jìn)行分組,并在圖中使用不同顏色的元素加以區(qū)分。
  • size也是data中的鍵或向量,根據(jù)size變量控制圖中點(diǎn)的大小或線條的粗細(xì)。
  • style也是data中的鍵或向量,根據(jù)style變量對(duì)數(shù)據(jù)進(jìn)行分組,并在圖中使用不同類型的元素加以區(qū)分,比如點(diǎn)線、虛線等。
  • kind指定要繪制的關(guān)系圖類型,可選"scatter"(散點(diǎn)圖)和"line"(線形圖),默認(rèn)值為"scatter"。

relplot函數(shù)提供了幾種可視化數(shù)據(jù)變量之間關(guān)系的方法,通過kind參數(shù)選擇要使用的方法,并通過hue、size和style等參數(shù)來顯示數(shù)據(jù)的不同子集。常見的關(guān)系圖有兩種,即散點(diǎn)圖和線形圖,因此Seaborn還提供了scatterplot和lineplot函數(shù),它們的語法格式如下:

  1. seaborn.scatterplot(*[, x, y, hue, style, size, …]) 
  2.  
  3. seaborn.lineplot((*[, x, y, hue, style, size, …]))  

scatterplot用于繪制散點(diǎn)圖,相當(dāng)于seaborn.relplot(kind="scatter");lineplot用于繪制線形圖,相當(dāng)于seaborn.relplot(kind="line");其他參數(shù)及含義與relplot函數(shù)相同。當(dāng)其中一個(gè)變量是連續(xù)變量時(shí),更適合使用線形圖表示變量之間的關(guān)系。

下面通過代碼清單1演示如何用Seaborn繪制關(guān)系圖。

  1. 代碼清單1 Seaborn繪制關(guān)系圖的示例 
  2.  
  3. 1 import matplotlib.pyplot as plt 
  4.  
  5. 2 import seaborn as sns 
  6.  
  7. 3 tips= sns.load_dataset("tips"
  8.  
  9. 4 print(tips.head()) 
  10.  
  11. 5 sns.relplot(x='total_bill', y='tip', data=tips, hue='smoker', style='sex'size='size'
  12.  
  13. 6 plt.show() 

程序執(zhí)行結(jié)束后,輸出的結(jié)果如下:

  1.      total_bill   tip     sex   smoker  day   time   size 
  2.  
  3. 0         16.99  1.01  Female       No  Sun  Dinner     2 
  4.  
  5. 1         10.34  1.66    Male       No  Sun  Dinner     3 
  6.  
  7. 2         21.01  3.50    Male       No  Sun  Dinner     3 
  8.  
  9. 3         23.68  3.31    Male       No  Sun  Dinner     2 
  10.  
  11. 4         24.59  3.61  Female       No  Sun  Dinner     4 
  12.  
  13. <seaborn.axisgrid.FacetGrid at 0x16dea2711f0> 

程序繪制的關(guān)系圖如圖1所示。

圖1 Seaborn繪制散點(diǎn)關(guān)系圖示例

下面對(duì)代碼清單1中的代碼做簡(jiǎn)要說明。

  • 第2行代碼導(dǎo)入seaborn模塊并將其重命名為sns。
  • 第3行代碼通過sns.load_dataset()函數(shù)連網(wǎng)加載Seaborn開發(fā)者提供的在線樣本數(shù)據(jù)集“tips.csv”,返回值tips是一個(gè)DataFrame對(duì)象。
  • 第4行代碼打印tips數(shù)據(jù)的前5行,以觀察數(shù)據(jù)結(jié)構(gòu)。
  • 第5行代碼通過sns.relplot()函數(shù)繪制total_bill與tip變量的關(guān)系圖,如圖1所示。x坐標(biāo)為'total_bill'變量,y坐標(biāo)為'tip'變量;hue='smoker'指定以'smoker'變量對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分類并以不同顏色顯示,不吸煙者對(duì)應(yīng)的數(shù)據(jù)點(diǎn)是藍(lán)色的,吸煙者對(duì)應(yīng)的數(shù)據(jù)點(diǎn)為橙色;style='sex'指定以'sex'變量對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分類并以不同樣式顯示,女性對(duì)應(yīng)的數(shù)據(jù)點(diǎn)形狀是圓點(diǎn),而男性對(duì)應(yīng)的數(shù)據(jù)點(diǎn)形狀則是“×”;size='size'指定以'size'變量對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分類并以不同大小顯示。從圖6-6中可以進(jìn)一步分析出不同分類中total_bill與tip的關(guān)系。

Tips

sns.load_dataset()函數(shù)是連網(wǎng)加載在線數(shù)據(jù)集,還可以在https://github.com/mwaskom/ seaborn-data網(wǎng)站中將數(shù)據(jù)集下載到本地使用。

02分布圖

分布圖可以直觀地顯示一個(gè)或多個(gè)變量在某個(gè)維度上的分布情況。Seaborn提供了幾種常用的繪制分布圖的函數(shù),包括displot()、histplot()、rdeplot()、rugplot()、distplot()和jointplot()等。

1. displot()函數(shù)

displot()函數(shù)提供了幾種可視化數(shù)據(jù)單變量或雙變量分布的方法,語法格式如下:

  1. seaborn.displot([data, x, y, hue, row, col, …]) 

主要參數(shù)說明如下:

  • data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型可以是pandas.DataFrame對(duì)象、numpy.ndarray數(shù)組、映射或序列類型等。
  • x和y是參數(shù)data中的鍵或向量,指定分布圖中x軸和y軸的變量。
  • hue是data中的鍵或向量,根據(jù)hue變量對(duì)數(shù)據(jù)進(jìn)行分組,并在圖中使用不同顏色的元素加以區(qū)分。
  • row和col是data中的鍵或向量,根據(jù)row或col變量提取數(shù)據(jù)子集,并將子集分布情況繪制在不同的面板上。
  • kind指定要繪制的分布圖類型,可選"hist"(直方圖)、"kde"(核密度估計(jì))、 "ecdf"(經(jīng)驗(yàn)累積分布函數(shù)),默認(rèn)值為"hist"。

displot函數(shù)通過kind參數(shù)選擇要使用的繪制數(shù)據(jù)分布情況的方法,并通過hue、row、col等參數(shù)來處理不同的數(shù)據(jù)子集。Seaborn還提供了三個(gè)更具體的繪制分布圖的函數(shù)histplot()、kdeplot()和ecdfplot(),語法格式如下:

  1. seaborn.histplot([data, x, y, hue, weights, stat, …]) 
  2.  
  3. seaborn.kdeplot([x, y, shade, vertical, kernel, bw, …]) 
  4.  
  5. seaborn.ecdfplot([data, x, y, hue, weights, stat, …]) 
  • histplot()函數(shù)主要用于繪制單變量單特征數(shù)據(jù)的直方圖,相當(dāng)于seaborn.displot (kind= "hist")。
  • kdeplot()函數(shù)使用核密度估計(jì)繪制單變量或雙變量分布,相當(dāng)于seaborn.displot (kind= "kde")。
  • ecdfplot()函數(shù)使用經(jīng)驗(yàn)累積分布函數(shù)繪制單變量的分布,相當(dāng)于seaborn.displot (kind= "ecdf")。

2. rugplot()函數(shù)

rugplot()函數(shù)的功能是繪制軸須圖(毛毯分布圖),即通過邊緣軸須線的方式顯示單個(gè)觀測(cè)點(diǎn)的位置,以補(bǔ)充其他分布圖,其語法格式如下:

  1. seaborn.rugplot([x, height=0.025, axis, ax, data, y, hue, …]) 

主要參數(shù)說明如下:

x和y分別是x軸和y軸的觀測(cè)值向量。

  • height設(shè)置每個(gè)觀測(cè)點(diǎn)對(duì)應(yīng)的軸須細(xì)線的高度,默認(rèn)值為0.025。
  • axis指定軸須圖繪制的坐標(biāo)軸,默認(rèn)為x軸。
  • ax指定將圖像繪制在已有的axes對(duì)象中。
  • hue指定區(qū)分顏色的分類變量。

3. distplot()函數(shù)

distplot()函數(shù)整合了Matplotlib的hist()函數(shù)與Seaborn的kdeplot()函數(shù)的功能,并增加了rugplot()函數(shù)繪制軸須圖的功能,因此它是一個(gè)功能非常強(qiáng)大且靈活實(shí)用的繪制分布圖函數(shù),其語法格式如下:

  1. seaborn.distplot([a, bins, hist, kde, rug, fit, …]) 

主要參數(shù)說明如下:

  • a是待觀察分析的單個(gè)變量,數(shù)據(jù)類型可以是Series對(duì)象、一維數(shù)組或列表。
  • bins指定直方圖顯示矩形條的數(shù)量,默認(rèn)值為None,此時(shí)會(huì)根據(jù)Freedman-Diaconis準(zhǔn)則自動(dòng)計(jì)算合適的條紋個(gè)數(shù)。
  • hist指定是否繪制直方圖,布爾類型,默認(rèn)值為True。
  • kde指定是否繪制高斯核密度估計(jì)曲線,布爾類型,默認(rèn)值為True。
  • rug指定是否在支持的數(shù)據(jù)軸上繪制對(duì)應(yīng)軸須圖,布爾類型,默認(rèn)值為False。
  • fit傳入scipy.stats中的分布類型,用于在觀察變量上抽取相關(guān)統(tǒng)計(jì)特征來強(qiáng)行擬合指定的分布,并繪制估計(jì)的概率密度函數(shù)(PDF),默認(rèn)值為None,即不進(jìn)行擬合。

下面通過代碼清單2演示如何通過Seaborn繪制分布圖。

  1. 代碼清單2 Seaborn繪制分布圖的示例 
  2.  
  3. 1 import seaborn as sns 
  4.  
  5. 2 import matplotlib.pyplot as plt 
  6.  
  7. 3 tips= sns.load_dataset("tips"
  8.  
  9. 4 sns.set_theme(style="whitegrid"
  10.  
  11. 5 sns.displot(data=tips, x="total_bill", col="time", row="sex", binwidth=3, height=3, facet_kws= dict(margin_titles=True)) 
  12.  
  13. 6 plt.subplots() 
  14.  
  15. 7 sns.distplot(a=tips['total_bill'], rug=True, hist=False
  16.  
  17. 8 plt.show() 

程序執(zhí)行結(jié)束后,輸出的圖像如圖2和圖3所示。

下面對(duì)代碼清單2中的代碼做簡(jiǎn)要說明。

  • 第4行代碼通過sns.set_theme()函數(shù)設(shè)置主題樣式為whitegrid,即白色背景和網(wǎng)格線。
  • 第5行代碼通過sns.displot()函數(shù)繪制total_bills變量的分布圖,默認(rèn)繪圖樣式為直方圖。col="time"指定以time變量對(duì)數(shù)據(jù)分組并繪制在不同列,如圖2所示,time為Dinner的數(shù)據(jù)分布繪制在第一列,而time為L(zhǎng)unch的數(shù)據(jù)分布繪制在第二列;row="sex"指定以sex變量對(duì)數(shù)據(jù)再次分組并繪制不同行,如圖2所示,sex為Female的數(shù)據(jù)分布繪制在第一行,而sex為Male的數(shù)據(jù)分布繪制在第二行。binwidth=3指定直方圖矩形條的寬度為3;height=3指定每個(gè)子圖面板的高度為3;facet_kws = dict(margin_titles=True)設(shè)置每行對(duì)應(yīng)row變量標(biāo)簽繪制在最后一列的右側(cè)。
  • 第6行代碼通過plt.subplots()函數(shù)新建一個(gè)Figure對(duì)象,用于繪制第二個(gè)圖像。
  • 第7行代碼通過sns.distplot()函數(shù)繪制total_bill變量的高斯核密度估計(jì)曲線,rug=True表示要繪制對(duì)應(yīng)的軸須圖,hist=False表示不繪制直方圖,kde默認(rèn)值為True,即繪制高斯核密度估計(jì)曲線,如圖3所示。

圖2 seaborn.displot函數(shù)繪制分布圖示例

圖3 seaborn.distplot函數(shù)繪制高斯核密度估計(jì)曲線示例

4. jointplot函數(shù)

seaborn.jointplot()函數(shù)提供了幾種繪制兩個(gè)變量的聯(lián)合分布圖的方法,其語法格式如下:

  1. seaborn.jointplot(*[,x,y,data,kind,color,...]) 

主要參數(shù)說明如下:

  • data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型可以是pandas.DataFrame對(duì)象、numpy.ndarray數(shù)組、映射或序列類型等。
  • x和y是參數(shù)data中的鍵或向量,指定分布圖中x軸和y軸的變量。聯(lián)合分布圖是雙向繪制的,即兩個(gè)變量分別以對(duì)方作為自變量繪制分布圖。
  • kind指定繪制主分布圖的類型,可選擇值為"scatter"(散點(diǎn)圖)、"kde"(核密度估計(jì)曲線)、"hist"(直方圖)、"hex"(六邊形圖)、"reg"(回歸圖)或"resid"(線性回歸殘差圖),默認(rèn)值為"scatter"。
  • color指定圖像中元素的顏色。

下面通過代碼清單3演示如何通過jointplot函數(shù)繪制分布圖。

  1. 代碼清單3 jointplot函數(shù)繪制分布圖的示例 
  2.  
  3. 1import seaborn as sns 
  4.  
  5. 2import matplotlib.pyplot as plt 
  6.  
  7. 3tips = sns.load_dataset("tips"
  8.  
  9. 4sns.set(style="white") #設(shè)置風(fēng)格樣式 
  10.  
  11. 5sns.jointplot(x="total_bill", y="tip", data=tips) 
  12.  
  13. 6plt.show() 

程序執(zhí)行結(jié)束后,輸出的圖像如圖4所示。

圖4 jointplot函數(shù)繪制聯(lián)合分布圖示例

下面對(duì)代碼清單3中的代碼做簡(jiǎn)要說明。

  • 第4行代碼通過sns.set()函數(shù)設(shè)置主題樣式為white,即白色背景無網(wǎng)格。
  • 第5行代碼通過sns.jointplot()函數(shù)繪制total_bill和tip變量的聯(lián)合分布圖,如圖5所示。中間的主分布圖默認(rèn)為散點(diǎn)圖,顯示total_bill和tip變量之間的關(guān)系。主圖上方對(duì)應(yīng)繪制x軸變量total_bill的直方圖,主圖右側(cè)則對(duì)應(yīng)繪制y軸變量tip的直方圖。

03分類圖

分類圖展示數(shù)據(jù)根據(jù)特定變量進(jìn)行分類后的統(tǒng)計(jì)情況。常用的分類圖包括分類散點(diǎn)圖、箱形圖、條形圖等。Seaborn的catplot()函數(shù)提供了幾種不同的分類可視化方法,以便顯示數(shù)值變量與一個(gè)或多個(gè)分類變量之間的關(guān)系,常用語法格式如下:

  1. seaborn.catplot(*[,x,y,hue,data,row,col,kind,...]) 

參數(shù)說明如下:

  • data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型只能是長(zhǎng)格式的pandas.DataFrame對(duì)象,即每一列對(duì)應(yīng)一個(gè)變量,每一行對(duì)應(yīng)一個(gè)觀察值。
  • x和y是data數(shù)據(jù)集中的變量名,指定分類圖中x軸和y軸的變量。
  • hue也是data數(shù)據(jù)集中的變量名,根據(jù)hue變量對(duì)數(shù)據(jù)進(jìn)行分組,并在圖中使用不同顏色的元素加以區(qū)分。
  • row和col也是data數(shù)據(jù)集中的變量名,作為分類變量提取數(shù)據(jù)子集,并將子集分布情況繪制在不同的面板上。
  • kind指定要繪制的分類圖類型,可選類型有"strip"(帶狀圖)、"swarm"(分簇散點(diǎn)圖)、"box"(箱形圖)、"violin"(小提琴圖)、"boxen"(增強(qiáng)箱形圖)、"point"(點(diǎn)估計(jì))、"bar"(條形圖)或"count"(計(jì)數(shù)條形圖),默認(rèn)值為"strip"。

catplot()函數(shù)通過kind參數(shù)選擇要使用的繪制數(shù)據(jù)分類的方法,并通過hue、row、col等參數(shù)來處理不同的數(shù)據(jù)子集。Seaborn還提供了三類更具體的繪制分類圖的函數(shù),包括分類散點(diǎn)圖、分類分布圖和分類預(yù)測(cè)圖。

1.分類散點(diǎn)圖函數(shù)

分類散點(diǎn)圖函數(shù)包括stripplot()和swarmplot(),常用的語法格式如下:

  1. seaborn.stripplot(*[, x, y, hue, data, order, …]) 
  2.  
  3. seaborn.swarmplot(*[, x, y, hue, data, order, …]) 

seaborn.stripplot(*[,seaborn.swarmplot(*[,stripplot()相當(dāng)于seaborn.catplot(kind= "strip"),可以顯示測(cè)量變量在每個(gè)類別的分布情況,繪制的散點(diǎn)呈帶狀,數(shù)據(jù)較多時(shí)會(huì)有重疊的部分。

swarmplot()相當(dāng)于seaborn.catplot(kind= "swarm"),它與stripplot()類似,但繪制的數(shù)據(jù)點(diǎn)不會(huì)重疊。

2.分類分布圖函數(shù)

分類分布圖函數(shù)包括boxplot()、violinplot()和boxenplot(),常用的語法格式如下:

  1. seaborn.boxplot(*[, x, y, hue, data, order, …]) 
  2.  
  3. seaborn.violinplot(*[, x, y, hue, data, order, …]) 
  4.  
  5. seaborn.boxenplot(*[, x, y, hue, data, order, …]) 
  • boxplot()相當(dāng)于seaborn.catplot(kind= "box"),用于繪制箱形圖以顯示與類別相關(guān)的分布情況,可以顯示四分位數(shù)、中位數(shù)和極值。
  • violinplot()相當(dāng)于seaborn.catplot(kind= " violin "),結(jié)合了箱形圖和核密度估計(jì)圖。
  • boxenplot()相當(dāng)于seaborn.catplot(kind= "boxen"),用于為更大的數(shù)據(jù)集繪制增強(qiáng)箱形圖。

3.分類預(yù)測(cè)圖函數(shù)

分類預(yù)測(cè)圖函數(shù)包括pointplot()、barplot()和countplot(),常用的語法格式如下:

  1. seaborn.pointplot(*[, x, y, hue, data, order, …]) 
  2.  
  3. seaborn.barplot(*[, x, y, hue, data, order, …]) 
  4.  
  5. seaborn.countplot(*[, x, y, hue, data, order, …]) 
  • pointplot()相當(dāng)于seaborn.catplot(kind= "point"),使用散點(diǎn)圖符號(hào)顯示點(diǎn)估計(jì)和置信區(qū)間。
  • barplot()相當(dāng)于seaborn.catplot(kind= "bar"),使用條形圖顯示點(diǎn)估計(jì)和置信區(qū)間。
  • countplot()相當(dāng)于seaborn.catplot(kind= "count"),使用條形圖顯示每個(gè)分類中的觀察值計(jì)數(shù)。

下面通過代碼清單4演示如何通過Seaborn繪制分類圖。

  1. 代碼清單4 Seaborn繪制分類圖的示例 
  2.  
  3. 1 import seaborn as sns 
  4.  
  5. 2 import pandas as pd 
  6.  
  7. 3 import matplotlib.pyplot as plt 
  8.  
  9. 4 tips = sns.load_dataset("tips"
  10.  
  11. 5 sns.set_theme(style="whitegrid"
  12.  
  13. 6 f = sns.catplot(data=tips, kind="bar",x="day", y="total_bill", hue="smoker"
  14.  
  15. 7 f.despine(left=True
  16.  
  17. 8 f.set_axis_labels("day""total_bill"
  18.  
  19. 9 f.legend.set_title("smoker"
  20.  
  21. 10 plt.subplots() 
  22.  
  23. 11 sns.boxplot(x="day", y="total_bill", data=tips) 
  24.  
  25. 12 plt.show() 

程序執(zhí)行結(jié)束后,輸出的圖像如圖5和圖6所示。

下面對(duì)代碼清單4中的代碼做簡(jiǎn)要說明。

  • 第6行代碼通過sns.catplot()函數(shù)針對(duì)數(shù)據(jù)集tips繪制分布圖,kind="bar"指定繪制條形圖;x="day"指定x坐標(biāo)為day變量,即根據(jù)day變量對(duì)數(shù)據(jù)集進(jìn)行分類;y="total_bill"指定y坐標(biāo)為total_bill變量,即顯示total_bill變量的統(tǒng)計(jì)情況;hue="smoker"指定以smoker變量對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分類并以不同顏色顯示,如圖5所示,smoker值為No的對(duì)應(yīng)數(shù)據(jù)條是藍(lán)色的,smoker值為Yes的對(duì)應(yīng)數(shù)據(jù)條是棕色的。返回值f是FacetGrid對(duì)象。

圖5 seaborn.catplot()函數(shù)繪制分類圖示例

圖6 seaborn.boxplot()函數(shù)繪制箱形圖示例

  • 第7行代碼通過f.despine(left=True)設(shè)置移除f左側(cè)的y軸軸線。
  • 第8~9行代碼分別設(shè)置x軸標(biāo)簽為day,y軸標(biāo)簽為total_bill,圖例標(biāo)題為smoker。
  • 第10行代碼通過plt.subplots()函數(shù)新建一個(gè)Figure對(duì)象。
  • 第11行代碼通過sns.boxplot()函數(shù)繪制箱形圖,同樣指定x坐標(biāo)為day變量,指定y坐標(biāo)為total_bill變量,結(jié)果如圖6所示。

04回歸圖

回歸圖是使用統(tǒng)計(jì)模型估計(jì)兩個(gè)變量間的關(guān)系。Seaborn提供了常用的繪制回歸圖的函數(shù)regplot()和lmplot()。regplot()函數(shù)的功能是繪制數(shù)據(jù)和線性回歸模型擬合的曲線,常用的語法格式如下:

  1. seaborn.regplot(*[, x, y, data, x_estimator, …]) 

主要參數(shù)說明如下:

data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型是DataFrame對(duì)象,即每一列對(duì)應(yīng)一個(gè)變量,每一行對(duì)應(yīng)一個(gè)觀察值。

x和y是輸入變量,數(shù)據(jù)類型可以是字符串、Series對(duì)象或者向量數(shù)組等。如果是字符串,則與data中的列名相對(duì)應(yīng)。如果是Pandas對(duì)象,則坐標(biāo)軸被標(biāo)記為Series名稱。

lmplot()函數(shù)結(jié)合了regplot()和FacetGrid的功能,為繪制數(shù)據(jù)集的條件子集的回歸模型提供接口,語法格式如下:

  1. seaborn.lmplot(*[, x, y, data, hue, col, row, …]) 

主要參數(shù)說明如下:

  • data是輸入的數(shù)據(jù)集,數(shù)據(jù)類型是DataFrame對(duì)象,即每一列對(duì)應(yīng)一個(gè)變量,每一行對(duì)應(yīng)一個(gè)觀察值。
  • x和y是輸入變量,數(shù)據(jù)類型是字符串,與data中的列名相對(duì)應(yīng)。
  • hue、col和row是劃分?jǐn)?shù)據(jù)子集的變量,這些子集將繪制在網(wǎng)格中的不同面板上。

regplot()和lmplot()函數(shù)密切相關(guān),兩者主要的區(qū)別是:regplot接受各種類型的x和y參數(shù),包括numpy arrays 、pandas.series 或者pandas.Dataframe對(duì)象;而lmplot()的x和y參數(shù)只接受字符串類型。

下面通過代碼清單5演示如何通過Seaborn繪制回歸圖。

  1. 代碼清單5 Seaborn繪制回歸圖的示例 
  2.  
  3. 1 import seaborn as sns 
  4.  
  5. 2 import matplotlib.pyplot as plt 
  6.  
  7. 3 tips = sns.load_dataset("tips"
  8.  
  9. 4 sns.regplot(x="total_bill", y="tip", data=tips) 
  10.  
  11. 5 sns.lmplot(x="total_bill", y="tip", hue="smoker",col='sex', data=tips) 
  12.  
  13. 6 plt.show() 

程序執(zhí)行結(jié)束后,輸出的圖像如圖7和圖8所示。

圖7 seaborn.regplot()函數(shù)繪制回歸圖示例

圖8 seaborn.lmplot()函數(shù)繪制回歸圖示例

下面對(duì)代碼清單5中的代碼做簡(jiǎn)要說明。

  • 第4行代碼通過sns.regplot()函數(shù)繪制回歸圖,指定x坐標(biāo)為total_bill變量,指定y坐標(biāo)為tip變量,其他設(shè)置采用默認(rèn)值,結(jié)果如圖6-12所示,繪制出了total_bill和tip變量之間的線性擬合曲線,同時(shí)實(shí)際數(shù)據(jù)以散點(diǎn)的形式顯示。
  • 第5行代碼通過sns.lmplot()函數(shù)在一個(gè)Facegrid對(duì)象中繪制total_bill和tip的回歸曲線;hue="smoker"指定以smoker變量對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分類并以不同的顏色顯示,如圖8所示,smoker值為No的數(shù)據(jù)點(diǎn)和擬合直線是藍(lán)色的,smoker值為Yes的數(shù)據(jù)點(diǎn)和擬合直線是橙色的;col='sex'指定以sex變量對(duì)數(shù)據(jù)再次分組并繪制在不同列,如圖8所示,sex為Female的數(shù)據(jù)分布繪制在第一列,sex為Male的數(shù)據(jù)分布繪制在第二列。

05熱力圖

熱力圖是將不同的數(shù)據(jù)值用不同的標(biāo)志加以標(biāo)注的一種可視化分析手段,標(biāo)注的手段一般包括顏色的深淺、點(diǎn)的疏密以及呈現(xiàn)比重的形式。在數(shù)據(jù)分析中,如果離散數(shù)據(jù)波動(dòng)變化比較大,那么可以使用熱力圖來觀察波動(dòng)變化。

Seaborn提供的heatmap()函數(shù)可以為二維數(shù)據(jù)繪制由顏色編碼矩陣組成的熱力圖,語法格式如下:

  1. seaborn.heatmap(data, *[, vmin, vmax, cmap, center, …]) 

主要參數(shù)說明如下:

  • data是輸入的二維矩形數(shù)據(jù)集,數(shù)據(jù)類型可以是DataFrame對(duì)象或二維ndarray數(shù)組等。
  • vmin和vmax指定colormap的值,數(shù)據(jù)類型為float,默認(rèn)值根據(jù)數(shù)據(jù)或其他關(guān)鍵參數(shù)來決定。
  • cmap指定數(shù)據(jù)值到顏色空間的映射,數(shù)據(jù)類型可以是Matplotlib colormap名稱或?qū)ο蟆㈩伾斜淼取?/li>
  • center指定在繪制發(fā)散數(shù)據(jù)時(shí)顏色映射的居中值,數(shù)據(jù)類型為float。

下面通過代碼清單6演示如何通過Seaborn繪制熱力圖。

  1. 代碼清單6 Seaborn繪制熱力圖的示例 
  2.  
  3. 1 import numpy as np 
  4.  
  5. 2 import seaborn as sns 
  6.  
  7. 3 import matplotlib.pyplot as plt 
  8.  
  9. 4 np.random.seed(0) 
  10.  
  11. 5 uniform_data = np.random.rand(10, 12) 
  12.  
  13. 6 sns.heatmap(uniform_data) 
  14.  
  15. 7 plt.show() 

程序執(zhí)行結(jié)束后,輸出的圖像如圖9所示。

圖9 seaborn.heatmap()函數(shù)繪制熱力圖示例

下面對(duì)代碼清單6中的代碼做簡(jiǎn)要說明。

  • 第4~5行代碼通過numpy.random.rand函數(shù)隨機(jī)生成了10×12的二維數(shù)組uniform_data。
  • 第6行代碼通過sns.heatmap()函數(shù)以熱力圖的形式展示uniform_data的數(shù)值變化。

 

本文摘編于《Python數(shù)據(jù)分析與應(yīng)用》,經(jīng)出版方授權(quán)發(fā)布。

 

責(zé)任編輯:武曉燕 來源: 數(shù)倉寶貝庫
相關(guān)推薦

2021-08-31 19:14:38

技術(shù)埋點(diǎn)運(yùn)營(yíng)

2021-09-03 18:38:13

數(shù)據(jù)湖數(shù)據(jù)倉庫

2021-09-26 15:58:05

MySQL SQL 語句數(shù)據(jù)庫

2022-11-01 18:21:14

數(shù)據(jù)埋點(diǎn)SDK

2021-10-09 00:02:04

DevOps敏捷開發(fā)

2021-06-13 12:03:46

SaaS軟件即服務(wù)

2022-03-27 20:32:28

Knative容器事件模型

2021-09-14 18:27:08

Spark

2021-03-25 11:24:25

爬蟲技術(shù)開發(fā)

2021-12-03 18:25:56

數(shù)據(jù)指標(biāo)本質(zhì)

2022-04-27 18:25:02

數(shù)據(jù)采集維度

2021-10-17 20:38:30

微服務(wù)內(nèi)存組件

2020-11-03 07:04:39

云計(jì)算公有云私有云

2021-10-12 18:31:40

流量運(yùn)營(yíng)前端

2020-11-30 08:34:44

大數(shù)據(jù)數(shù)據(jù)分析技術(shù)

2021-02-14 00:21:37

區(qū)塊鏈數(shù)字貨幣金融

2021-03-03 21:31:24

量化投資利潤(rùn)

2021-06-29 11:21:41

數(shù)據(jù)安全網(wǎng)絡(luò)安全黑客

2022-01-05 18:27:44

數(shù)據(jù)挖掘工具

2022-07-31 20:29:28

日志系統(tǒng)測(cè)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)