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

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python數(shù)據(jù)分析 | seaborn工具與數(shù)據(jù)可視化

Python中最常用于數(shù)據(jù)可視化的工具庫包括Matplotlib和Seaborn。其中,Matplotlib屬于 Python 數(shù)據(jù)可視化的基礎(chǔ)庫,具備很高的靈活度,但應(yīng)用過于復(fù)雜——官方文檔有3000 多頁,包含上千個方法以及數(shù)萬個參數(shù)。

對于快捷地進行數(shù)據(jù)分析可視化而言,Seaborn是一個更簡單易用的選擇。Seaborn 基于 Matplotlib 核心庫進行了更高階的 API 封裝,可以輕松地畫出更漂亮的圖形。Seaborn 的漂亮主要體現(xiàn)在配色更加舒服、以及圖形元素的樣式更加細(xì)膩。下面是 Seaborn 官方給出的參考圖。

一、Seaborn工具庫優(yōu)點

  • 內(nèi)置數(shù)個經(jīng)過優(yōu)化的樣式效果。
  • 增加調(diào)色板工具,可以很方便地為數(shù)據(jù)搭配顏色。
  • 單變量和雙變量分布繪圖更為簡單,可用于對數(shù)據(jù)子集相互比較。
  • 對獨立變量和相關(guān)變量進行回歸擬合和可視化更加便捷。
  • 對數(shù)據(jù)矩陣進行可視化,并使用聚類算法進行分析。
  • 基于時間序列的繪制和統(tǒng)計功能,更加靈活的不確定度估計。
  • 基于網(wǎng)格繪制出更加復(fù)雜的圖像集合。

二、快速優(yōu)化Matplotlib繪制的圖形

Matplotlib 繪圖的默認(rèn)圖像樣式算不上美觀,可以使用 Seaborn 完成快速優(yōu)化。

使用 Matplotlib 繪制一張簡單的圖像。

import matplotlib.pyplot as plt%matplotlib inlinex = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]y_bar = [3, 4, 6, 8, 9, 10, 9, 11, 7, 8]y_line = [2, 3, 5, 7, 8, 9, 8, 10, 6, 7]plt.bar(x, y_bar)plt.plot(x, y_line, '-o', color='y')

使用 Seaborn 完成圖像快速優(yōu)化。

方法非常簡單,只需要將 Seaborn 提供的樣式聲明代碼 sns.set() 放置在繪圖前即可。

import seaborn as snssns.set() # 聲明使用 Seaborn 樣式plt.bar(x, y_bar)plt.plot(x, y_line, '-o', color='y')

可以發(fā)現(xiàn),相比于 Matplotlib 默認(rèn)的純白色背景,Seaborn 默認(rèn)的淺灰色網(wǎng)格背景看起來的確要細(xì)膩舒適一些。而柱狀圖的色調(diào)、坐標(biāo)軸的字體大小也都有一些變化。

sns.set() 的默認(rèn)參數(shù)為:

sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1, color_codes=False, rc=None)
  • context=’ ’ 參數(shù)控制著默認(rèn)的畫幅大小,分別有 {paper, notebook, talk, poster} 四個值。其中,poster > talk > notebook > paper。
  • style=’ ’ 參數(shù)控制默認(rèn)樣式,分別有 {darkgrid, whitegrid, dark, white, ticks},你可以自行更改查看它們之間的不同。
  • palette=’ ’ 參數(shù)為預(yù)設(shè)的調(diào)色板。分別有 {deep, muted, bright, pastel, dark, colorblind} 等,你可以自行更改查看它們之間的不同。
  • 剩下的 font=’ ’ 用于設(shè)置字體,font_scale= 設(shè)置字體大小,color_codes= 不使用調(diào)色板而采用先前的 'r’ 等色彩縮寫。

三、Seaborn核心繪圖函數(shù)與方法

Seaborn 一共擁有 50 多個 API 類,相比于 Matplotlib 數(shù)千個的規(guī)模,可以說是非常精簡了。根據(jù)圖形的適應(yīng)場景,Seaborn 的繪圖方法大致分類 6 類,這 6 大類下面又包含不同數(shù)量的繪圖函數(shù):

  • 關(guān)聯(lián)圖——relplot
  • 類別圖——catplot
  • 分布圖——distplot、kdeplot、jointplot、pairplot
  • 回歸圖——regplot、lmplot
  • 矩陣圖——heatmap、clustermap
  • 組合圖

接下來,我們通過『鳶尾花示例數(shù)據(jù)集』進行演示,使用 Seaborn 繪制適應(yīng)不同場景的圖形。首先導(dǎo)入數(shù)據(jù)集:

iris = sns.load_dataset('iris')iris.head()

在繪圖之前,先熟悉一下 iris 鳶尾花數(shù)據(jù)集。

數(shù)據(jù)集總共 150 行,由 5 列組成。分別代表:萼片長度、萼片寬度、花瓣長度、花瓣寬度、花的類別。其中,前四列均為數(shù)值型數(shù)據(jù),最后一列花的分類為三種,分別是:Iris Setosa、Iris Versicolour、Iris Virginica。

3.1 關(guān)聯(lián)圖

當(dāng)我們需要對數(shù)據(jù)進行關(guān)聯(lián)性分析時,可能會用到 Seaborn 提供的以下幾個 API。

relplot 是 relational plots 的縮寫,用于呈現(xiàn)數(shù)據(jù)之后的關(guān)系。relplot 主要有散點圖和線形圖2種樣式,適用于不同類型的數(shù)據(jù)。

(1)散點圖

指定 xx 和 yy 的特征,默認(rèn)可以繪制出散點圖。

sns.relplot(x='sepal_length', y='sepal_width', data=iris)

但是,上圖并不能看出數(shù)據(jù)類別之間的聯(lián)系。如果我們加入類別特征對數(shù)據(jù)進行著色,就更加直觀了。

sns.relplot(x='sepal_length', y='sepal_width', hue='species', data=iris)

Seaborn 的函數(shù)都有大量實用的參數(shù)。例如我們指定 style 參數(shù)可以賦予不同類別的散點不同的形狀。更多的參數(shù),希望大家通過閱讀 官方文檔 進行了解。

sns.relplot(x='sepal_length', y='sepal_width', hue='species', style='species', data=iris)

(2)線形圖

relplot 方法還支持線形圖,此時只需要指定 kind=”line” 參數(shù)即可。圖中陰影部分是自動給出的 95% 置信區(qū)間。

sns.relplot(x='sepal_length', y='petal_length', hue='species', style='species', kind='line', data=iris)

(3)API 層級:Axes-level 和 Figure-level

Seaborn 中有 API 層級的概念。Seaborn 中的 API 分為 Axes-level 和 Figure-level 兩種:Axes-level 的函數(shù)可以實現(xiàn)與 Matplotlib 更靈活和緊密的結(jié)合,而 Figure-level 則更像是「懶人函數(shù)」,適合于快速應(yīng)用。

你會發(fā)現(xiàn),上面我們一個提到了 3 個 API,分別是:relplot,scatterplot 和 lineplot。scatterplot 和 lineplot 就是 Axes-level 接口,relplot 則是 Figure-level 接口,也可以被看作是 scatterplot 和 lineplot 的結(jié)合版本。

例如,上方 relplot 繪制的圖也可以使用 lineplot 函數(shù)繪制,只要取消 relplot 中的 kind 參數(shù)即可。

sns.lineplot(x='sepal_length', y='petal_length', hue='species', style='species', data=iris)

3.2 類別圖

與關(guān)聯(lián)圖相似,類別圖的 Figure-level 接口是 catplot,其為 categorical plots 的縮寫。而 catplot 實際上是如下 Axes-level 繪圖 API 的集合:

(1)散點圖 strip / swarm

下面,我們看一下 catplot 繪圖效果。該方法默認(rèn)是繪制 kind='strip' 散點圖。

sns.catplot(x='sepal_length', y='species', data=iris)

kind='swarm' 可以讓散點按照 beeswarm 的方式防止重疊,可以更好地觀測數(shù)據(jù)分布。

sns.catplot(x='sepal_length', y='species', kind='swarm', data=iris)

同理,hue= 參數(shù)可以給圖像引入另一個維度,由于 iris 數(shù)據(jù)集只有一個類別列,我們這里就不再添加 hue= 參數(shù)了。如果一個數(shù)據(jù)集有多個類別,hue= 參數(shù)就可以讓數(shù)據(jù)點有更好的區(qū)分。

(2)箱線圖 box

接下來,我們依次嘗試其他幾種圖形的繪制效果。繪制箱線圖:

sns.catplot(x='sepal_length', y='species', kind='box', data=iris)

(3)增強箱線圖 boxen

sns.catplot(x='species', y='sepal_length', kind='boxen', data=iris)

(4)小提琴圖 violin

sns.catplot(x='sepal_length', y='species', kind='violin', data=iris)

(5)點線圖 point

sns.catplot(x='sepal_length', y='species', kind='point', data=iris)

(6)條形圖 bar

sns.catplot(x='sepal_length', y='species', kind='bar', data=iris)

(7)計數(shù)條形圖 count

sns.catplot(x='species', kind='count', data=iris)

3.3 分布圖

分布圖主要是用于可視化變量的分布情況,一般分為單變量分布和多變量分布(多指二元變量)。

Seaborn 提供的分布圖繪制方法一般有這幾個:distplot、kdeplot、jointplot、pairplot。接下來,我們依次來看一下這些繪圖方法的使用。

(1)單變量分布圖 distplot

Seaborn 快速查看單變量分布的方法是 distplot。默認(rèn)情況下,該方法將繪制直方圖并擬合核密度估計圖。

sns.distplot(iris['sepal_length'])

distplot 提供了參數(shù)來調(diào)整直方圖和核密度估計圖。例如,設(shè)置 kde=False 則可以只繪制直方圖,或者 hist=False 只繪制核密度估計圖。

2)核密度估計圖 kdeplot

當(dāng)然,kdeplot 可以專門用于繪制核密度估計圖,其效果和 distplot(hist=False) 一致,但 kdeplot 擁有更多的自定義設(shè)置。

sns.kdeplot(iris['sepal_length'])

(3)二元變量分布圖 jointplot

jointplot 主要是用于繪制二元變量分布圖。例如,我們探尋 sepal_length 和 sepal_width 二元特征變量之間的關(guān)系。

sns.jointplot(x='sepal_length', y='sepal_width', data=iris)

jointplot 并不是一個 Figure-level 接口,但其支持 kind= 參數(shù)指定繪制出不同樣式的分布圖。

例如,繪制出核密度估計對比圖 kde

sns.jointplot(x='sepal_length', y='sepal_width', data=iris, kind='kde')

繪制六邊形計數(shù)圖 hex

sns.jointplot(x='sepal_length', y='sepal_width', data=iris, kind='hex')

繪制回歸擬合圖 reg

sns.jointplot(x='sepal_length', y='sepal_width', data=iris, kind='reg')

(4)變量兩兩對比圖 pairplot

最后要介紹的 pairplot 更加強大,其支持一次性將數(shù)據(jù)集中的特征變量兩兩對比繪圖。默認(rèn)情況下,對角線上是單變量分布圖,而其他則是二元變量分布圖。

sns.pairplot(iris)

此時,我們引入第三維度 hue='species'會更加直觀。

sns.pairplot(iris, hue='species')

3.4 回歸圖

接下來,我們繼續(xù)介紹回歸圖,回歸圖的繪制函數(shù)主要有:lmplot 和 regplot。

(1)regplot

regplot 繪制回歸圖時,只需要指定自變量和因變量即可,regplot 會自動完成線性回歸擬合。

sns.regplot(x='sepal_length', y='sepal_width', data=iris)

(2)lmplot

lmplot 同樣是用于繪制回歸圖,但 lmplot 支持引入第三維度進行對比,例如我們設(shè)置 hue='species'。

sns.lmplot(x='sepal_length', y='sepal_width', hue='species', data=iris)

3.5 矩陣圖

矩陣圖中最常用的就只有 2 個,分別是:heatmap 和 clustermap。

(1)熱力圖 heatmap

意如其名,heatmap 主要用于繪制熱力圖。熱力圖在某些場景下非常實用,例如繪制出變量相關(guān)性系數(shù)熱力圖。

import numpy as npsns.heatmap(np.random.rand(10, 10))

(2)層次聚類結(jié)構(gòu)圖clustermap

除此之外,clustermap 支持繪制層次聚類結(jié)構(gòu)圖。如下所示,我們先去掉原數(shù)據(jù)集中最后一個目標(biāo)列,傳入特征數(shù)據(jù)即可。當(dāng)然,你需要對層次聚類有所了解,否則很難看明白圖像多表述的含義。

iris.pop('species')sns.clustermap(iris)

四、樣式控制與色彩自定義

瀏覽官方文檔,會發(fā)現(xiàn) Seaborn 中還存在大量已大些字母開始的類,例如 JointGrid,PairGrid 等。實際上這些類只是其對應(yīng)小寫字母的函數(shù) jointplot,pairplot 的進一步封裝。當(dāng)然,二者可能稍有不同,但并沒有本質(zhì)的區(qū)別。

除此之外,Seaborn 官方文檔 中還有關(guān)于 樣式控制 和 色彩自定義 等一些輔助組件的介紹。對于這些 API 的應(yīng)用沒有太大的難點,重點需要勤于練習(xí)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
15 種 Seaborn 可視化圖表詳解
可視化神器Seaborn的超全介紹
盤一盤 Python 系列 6 - Seaborn
Python數(shù)據(jù)可視化-seaborn Iris鳶尾花數(shù)據(jù)
R語言Cairo包的使用
R語言與數(shù)據(jù)挖掘?qū)W習(xí)筆記(3):數(shù)據(jù)探索
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服