国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
詳解 seaborn,快速實(shí)現(xiàn)統(tǒng)計(jì)數(shù)據(jù)可視化

哈嘍,大家好。

今天詳解 Seaborn,它基于 Matplotlib,用來(lái)制作統(tǒng)計(jì)圖形的 Python 庫(kù)。

Seaborn 的優(yōu)勢(shì):

  • 圖表豐富,比 matplotlib 易用
  • 與 pandas 結(jié)合
  • 支持?jǐn)?shù)值類(lèi)型多變量關(guān)系圖
  • 支持?jǐn)?shù)值類(lèi)型數(shù)據(jù)分布圖
  • 支持類(lèi)別類(lèi)型數(shù)據(jù)可視化
  • 支持回歸模型以及可視化
  • 輕松構(gòu)建結(jié)構(gòu)化多圖網(wǎng)格

我整理了一份 seaborn 核心知識(shí)點(diǎn)的思維導(dǎo)圖

seaborn核心知識(shí)

需要的朋友文末回復(fù)關(guān)鍵詞獲取。

下面我們就來(lái)學(xué)習(xí)一下這個(gè)強(qiáng)大的 Searborn 。


1. 多變量關(guān)系圖

多變量關(guān)系圖其實(shí)就是二維散點(diǎn)圖線圖,可以通過(guò)這些函數(shù)來(lái)繪制:relplot()scatterplot()lineplot()。

scatterplot()只能繪制散點(diǎn)圖lineplot()只能繪制線圖。

relplot()都可以繪制,通過(guò)kind參數(shù)來(lái)區(qū)分:

  • kind='scatter'(默認(rèn))等價(jià)于scatterplot()
  • kind='line'等價(jià)于lineplot()

在 seaborn 中,定義一個(gè)通用函數(shù)并用kind參數(shù)指定需要繪制的圖形,這種形式很常見(jiàn)。這樣做法的好處在于,調(diào)用一個(gè)函數(shù)便可以繪制多種圖形。

1.1 繪圖

繪制散點(diǎn)圖

import seaborn as sns
import pandas as pd
import numpy as np
sns.set_theme(style='darkgrid')

tips = sns.load_dataset('tips', data_home='seaborn-data', cache=True)
sns.relplot(x='total_bill', y='tip', data=tips);
散點(diǎn)圖

繪制線圖

df = pd.DataFrame({'a': range(10), 'b': np.random.randn(10)})
sns.relplot(x='a', y='b', kind='line', data=df)
線圖

seaborn 可以直接讀取 pandas DataFrame中的列作為x軸和y軸,一行代碼即可完成繪圖,使用比 matplotlib 更容易。

1.2 常用參數(shù)

relplot()函數(shù)中有一些常用的參數(shù),可以幫助我們繪制更復(fù)雜的圖形。

以上面散點(diǎn)圖為例,設(shè)置hue參數(shù),可以為不同類(lèi)別的點(diǎn)繪制不同的顏色。

sns.relplot(x='total_bill', y='tip', hue='smoker', data=tips);
hue參數(shù)

smokertips中的一列,取值為YesNo,上面散點(diǎn)圖中smoker=Yes時(shí)點(diǎn)是藍(lán)色,smoker=No時(shí),點(diǎn)是橙色。

設(shè)置col參數(shù),可以將數(shù)據(jù)繪制不同的散點(diǎn)圖中

sns.relplot(x='total_bill', y='tip', col='smoker', data=tips);
col參數(shù)

smoker=Yes的數(shù)據(jù)都繪制在第1行第1列的散點(diǎn)圖中;smoker=No的數(shù)據(jù)都繪制在第1行第2列的散點(diǎn)圖中。

設(shè)置style參數(shù),可以為不同類(lèi)別的點(diǎn)繪制不同的形狀。

sns.relplot(x='total_bill', y='tip', style='smoker', data=tips);
style參數(shù)

smoker=Yes的是圓點(diǎn);smoker=No星號(hào)。

下圖列舉了replot的其他的參數(shù),使用方式與上面類(lèi)似,這里就不再贅述了。

參數(shù)

這些參數(shù)對(duì)線圖也同樣適用,并且參數(shù)之間可以任意組合。

1.3 特殊的線圖

上面繪制的線圖,橫坐標(biāo)x取值是唯一的,但實(shí)際中有些數(shù)據(jù)橫坐標(biāo)取值不唯一,用relplot()繪制出來(lái)是下面的效果。

fmri = sns.load_dataset('fmri', data_home='seaborn-data', cache=True)
sns.relplot(x='timepoint', y='signal', kind='line', data=fmri);
橫坐標(biāo)聚合的線圖

藍(lán)色實(shí)線是x的平均值,周?chē)年幱笆瞧骄档?95% 置信區(qū)間。

周?chē)幱翱梢酝ㄟ^(guò)ci參數(shù)設(shè)置,如:ci='sd'表示繪制標(biāo)準(zhǔn)差,而不是置信區(qū)間。

sns.relplot(x='timepoint', y='signal', kind='line', ci='sd', data=fmri);
ci參數(shù)

ci=None可以不顯示陰影。

設(shè)置estimator=None參數(shù)可以關(guān)閉聚合

sns.relplot(x='timepoint', y='signal', estimator=None, kind='line', data=fmri);
estimator

2. 數(shù)據(jù)分布圖

seaborn 提供 histplot(),kdeplot(),ecdfplot()rugplot()函數(shù),分別繪制直方圖、核密度估計(jì)圖經(jīng)驗(yàn)累積分布圖垂直刻度。

分布圖的通用函數(shù)是displot(),通過(guò)指定kind來(lái)繪制不同的圖:

  • kind='hist'(默認(rèn))等價(jià)于histplot()
  • kind='kde'等價(jià)于kdeplot()
  • kind='ecdf'等價(jià)于ecdfplot()

由于rugplot()只是用來(lái)標(biāo)識(shí)刻度,它不需要kind指定,而是通過(guò)rug=Truerug=False(默認(rèn))來(lái)指定是否需要顯示在圖形中。

2.1 直方圖

直方圖是比較常見(jiàn)的數(shù)據(jù)分布圖,它的繪制也很簡(jiǎn)單。

sns.displot(penguins, x='flipper_length_mm')
直方圖

seaborn 提供了binwidth、bins等參數(shù)設(shè)置直方圖 bin 的寬度和數(shù)量,從而繪制不同形狀的直方圖。

這里也可以設(shè)置hue參數(shù),用不同顏色在一張圖里繪制不同類(lèi)別的直方圖。當(dāng)在一張圖里繪制多個(gè)直方圖時(shí),需要設(shè)置elementmultiple參數(shù)來(lái)指定多個(gè)直方圖的組合方式。

如:multiple='stack'代表堆疊顯示。

sns.displot(penguins, x='flipper_length_mm', hue='species', multiple='stack')
multiple='stack'

設(shè)置stat參數(shù)可以歸一化直方圖。如:設(shè)置stat='probability'可以使條形高度的和為1。

sns.displot(penguins, x='flipper_length_mm', hue='species', stat='probability')
stat='probability'

以下是直方圖常見(jiàn)的參數(shù)及取值

參數(shù)
2.2 核密度估計(jì)圖

直方圖的目的是通過(guò)分箱和計(jì)數(shù)觀察來(lái)近似生成數(shù)據(jù)的潛在概率密度函數(shù)。核密度估計(jì) (KDE) 是為這一問(wèn)題提供了不同的解決方案。

sns.displot(penguins, x='flipper_length_mm', kind='kde')
核密度估計(jì)圖

seaborn 從0.11.0版本開(kāi)始只支持高斯核函數(shù)。

設(shè)置bw_adjust參數(shù)可以讓 KDE 圖更平滑。

sns.displot(penguins, x='flipper_length_mm', kind='kde', bw_adjust=2)
bw_adjust=2

設(shè)置kde=True而不是kind='kde',可以同時(shí)繪制直方圖KDE 圖。

sns.displot(penguins, x='flipper_length_mm', kde=True)
kde=True
2.3 經(jīng)驗(yàn)累積分布圖

經(jīng)驗(yàn)累積分布函數(shù)(ECDF) 通過(guò)每個(gè)數(shù)據(jù)點(diǎn)繪制了一條單調(diào)遞增的曲線,使得曲線的高度反映了具有較小值的觀測(cè)值的比例。

sns.displot(penguins, x='flipper_length_mm', hue='species', kind='ecdf')
ECDF圖
2.4 二元分布圖

之前繪制的都是單變量分布圖,seaborn 也可以繪制兩個(gè)變量的分布圖。

sns.displot(penguins, x='bill_length_mm', y='bill_depth_mm')
二元分布圖

用平面圖來(lái)展示二元直方圖只能通過(guò)每個(gè)方塊的顏色深淺定性觀察數(shù)據(jù)的多少。

同樣的,也可以繪制二元核密度估計(jì)圖,畫(huà)出來(lái)的圖形是等高線

sns.displot(penguins, x='bill_length_mm', y='bill_depth_mm', kind='kde')
二元核密度估計(jì)圖

設(shè)置fill=True,可以通過(guò)顏色定性觀察面的高度。

seaborn 還提供了 jointplot() 函數(shù)為二元變量同時(shí)繪制不同圖形。

sns.jointplot(data=penguins, x='bill_length_mm', y='bill_depth_mm')
jointplot 直方圖

jointplot()默認(rèn)繪制兩變量散點(diǎn)圖和單變量直方圖。

設(shè)置kind=kde來(lái)繪制 KDE 圖。

sns.jointplot(
    data=penguins,
    x='bill_length_mm', y='bill_depth_mm', hue='species',
    kind='kde'
)
jointplot KDE圖

seanborn 還提供了pairplot()函數(shù),為更多變量繪圖。

sns.pairplot(penguins)
pairplot

默認(rèn)繪圖仍然是直方圖和散點(diǎn)圖。同樣可以設(shè)置kind=kde繪制多變量 KDE 圖。


3. 分類(lèi)圖

之前我們繪制的關(guān)系圖都是數(shù)值變量,當(dāng)數(shù)據(jù)中有類(lèi)別數(shù)據(jù)(離散值)時(shí),就需要用分類(lèi)圖來(lái)繪制。

seaborn 提供 catplot() 函數(shù)來(lái)繪制分類(lèi)圖,有以下3種類(lèi)別

  • 分類(lèi)散點(diǎn)圖

    • kind='strip'(默認(rèn)) 等價(jià)于 stripplot()
    • kind='swarm' 等價(jià)于 swarmplot()
  • 分類(lèi)分布圖

    • kind='box' 等價(jià)于 boxplot()
    • kind='violin' 等價(jià)于 violinplot()
    • kind='boxen' 等價(jià)于 boxenplot()
  • 分類(lèi)估計(jì)圖

    • kind='point' 等價(jià)于 pointplot()
    • kind='bar' 等價(jià)于 barplot()
    • kind='count' 等價(jià)于 countplot()
3.1 分類(lèi)散點(diǎn)圖

catplot()默認(rèn)使用stripplot()繪圖,它會(huì)用少量隨機(jī)'抖動(dòng)'調(diào)整分類(lèi)軸上的點(diǎn)位置,避免所有的點(diǎn)都重疊在一起。

tips = sns.load_dataset('tips', data_home='seaborn-data', cache=True)
sns.catplot(x='day', y='total_bill', data=tips)
stripplot

設(shè)置jitter參數(shù)可以控制抖動(dòng)的幅度,當(dāng)jitter=False時(shí),代表不抖動(dòng),繪制出的圖形跟使用關(guān)系散點(diǎn)圖是一樣的。

sns.catplot(x='day', y='total_bill', jitter=False, data=tips)

等價(jià)于

sns.relplot(x='day', y='total_bill', data=tips)
jitter=False

可以看到,圖上的xy坐標(biāo)相同的數(shù)據(jù)重合在一起,非常不方便觀察。

雖然jitter可以設(shè)置“抖動(dòng)”,但也有可能造成數(shù)據(jù)重疊。而kind='swarm'可以繪制非重疊的分類(lèi)散點(diǎn)圖。

sns.catplot(x='day', y='total_bill', kind='swarm', data=tips)
kind='swarm'
3.2 分類(lèi)分布圖

kind='box' 可以繪制箱線圖。

sns.catplot(x='day', y='total_bill', kind='box', data=tips)
kind='box'

kind='boxen' 可以繪制增強(qiáng)箱線圖。

diamonds = sns.load_dataset('diamonds', data_home='seaborn-data', cache=True)
sns.catplot(x='color', y='price', kind='boxen', data=diamonds.sort_values('color'))
kind='boxen'

kind='violin' 可以繪制小提琴圖。

sns.catplot(x='day', y='total_bill', hue='sex', kind='violin', split=True, data=tips)
kind='violin'

3.3 分類(lèi)估計(jì)圖

kind='bar' 以矩形條的方式展示數(shù)據(jù)點(diǎn)估值(默認(rèn)取平均值)和置信區(qū)間,該置信區(qū)間使用誤差線繪制。

titanic = sns.load_dataset('titanic', data_home='seaborn-data', cache=True)
sns.catplot(x='sex', y='survived', hue='class', kind='bar', data=titanic)
kind='bar'

矩形條的高度是survived列均值,上面的那根天線就是誤差線。

kind='count' 是常見(jiàn)的柱狀圖,統(tǒng)計(jì)x坐標(biāo)對(duì)應(yīng)的數(shù)據(jù)量。

sns.catplot(x='deck', kind='count', data=titanic)
kind='count'

kind='point' 繪制點(diǎn)圖,展示數(shù)據(jù)點(diǎn)的估計(jì)值(默認(rèn)平均值)和置信區(qū)間,并連接來(lái)自同一hue類(lèi)別的點(diǎn)。

sns.catplot(x='sex', y='survived', hue='class', kind='point', data=titanic)
kind='point'

4. 回歸圖

seaborn 提供線性回歸函數(shù)對(duì)數(shù)據(jù)擬合,包括regplot()lmplot(),它倆大部分功能是一樣的,只是輸入的數(shù)據(jù)和輸出圖形稍有不同。

lmplot()函數(shù)可以繪制兩個(gè)變量x、y的散點(diǎn)圖,擬合回歸模型并繪制回歸線和該回歸的 95% 置信區(qū)間。

tips = sns.load_dataset('tips')
sns.lmplot(x='total_bill', y='tip', data=tips);
lmplot

設(shè)置order參數(shù)可以擬合多項(xiàng)式回歸模型

anscombe = sns.load_dataset('anscombe', data_home='seaborn-data', cache=True)
sns.lmplot(x='x', y='y', data=anscombe.query('dataset == 'II''), order=2);
order=2

設(shè)置logistic=True參數(shù)可以擬合邏輯回歸模型

sns.lmplot(x='total_bill', y='big_tip', data=tips, logistic=True, y_jitter=.03);
logistic=True

5. 多圖網(wǎng)格

seaborn 提供了FacetGrid類(lèi)可以同時(shí)繪制多圖。

g = sns.FacetGrid(tips, row='sex', col='smoker')
g.map(sns.scatterplot, 'total_bill''tip')
FacetGrid

實(shí)際上它等價(jià)于下面這段代碼

sns.relplot(x='total_bill', y='tip', row='sex', col='smoker', data=tips)

當(dāng)然用FaceGrid的好處是可以像 matplotlib 那樣設(shè)置很多圖形屬性。

g = sns.FacetGrid(tips, row='sex', col='smoker')
g.map(sns.scatterplot, 'total_bill''tip')
g.set_axis_labels('Total bill''Tip')
g.set(xticks=[103050], yticks=[2610])
g.figure.subplots_adjust(wspace=.02, hspace=.02)

另外,seaborn 還提供了PairGrid,可以為多變量同時(shí)繪圖,且圖形種類(lèi)可以不同。

iris = sns.load_dataset('iris', data_home='seaborn-data', cache=True)
g = sns.PairGrid(iris)
g.map_upper(sns.scatterplot)
g.map_lower(sns.kdeplot)
g.map_diag(sns.kdeplot, lw=3, legend=False)
PairGrid

上圖中,對(duì)角線以及對(duì)角線下方是 KDE 圖,對(duì)角線上方是散點(diǎn)圖。


6. 樣式和調(diào)色板

這部分主要是對(duì)圖表外觀的設(shè)置,感興趣的朋友可以自行嘗試。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
詳細(xì)的數(shù)據(jù)可視化庫(kù)之Seaborn教程(一)
第126天:Seaborn-可視化統(tǒng)計(jì)關(guān)系
Python數(shù)據(jù)分析 | seaborn工具與數(shù)據(jù)可視化
可視化神器Seaborn的超全介紹
Seaborn官方教程中文教程(一)
Python Seaborn綜合指南,成為數(shù)據(jù)可視化專(zhuān)家
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服