中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

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

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

開(kāi)通VIP
Python Seaborn綜合指南,成為數(shù)據(jù)可視化專家



概述

  • Seaborn是Python流行的數(shù)據(jù)可視化庫(kù)

  • Seaborn結(jié)合了美學(xué)和技術(shù),這是數(shù)據(jù)科學(xué)項(xiàng)目中的兩個(gè)關(guān)鍵要素

  • 了解其Seaborn作原理以及使用它生成的不同的圖表

介紹

一個(gè)精心設(shè)計(jì)的可視化程序有一些特別之處。顏色突出,層次很好地融合在一起,整個(gè)輪廓流動(dòng),整個(gè)程序不僅有一個(gè)很好的美學(xué)質(zhì)量,它也為我們提供了有意義的技術(shù)洞察力。

這在數(shù)據(jù)科學(xué)中非常重要,因?yàn)槲覀兘?jīng)常處理大量雜亂的數(shù)據(jù)。對(duì)于數(shù)據(jù)科學(xué)家來(lái)說(shuō),具有可視化的能力是至關(guān)重要的。我們的利益相關(guān)者或客戶將更多地依賴于視覺(jué)提示,而不是復(fù)雜的機(jī)器學(xué)習(xí)模型。

有大量?jī)?yōu)秀的Python可視化庫(kù)可用,包括內(nèi)置的matplotlib。但Seaborn對(duì)我來(lái)說(shuō)很重要。它將美學(xué)魅力與技術(shù)洞察力無(wú)縫地結(jié)合在一起,我們很快就會(huì)看到這一點(diǎn)。

在本文中,我們將了解什么是seaborn以及為什么應(yīng)該使用它而不是matplotlib。然后我們將使用seaborn在Python中為數(shù)據(jù)生成各種不同的可視化。

目錄

  • 什么是Seaborn?

  • 為什么應(yīng)該使用Seaborn而不是matplotlib?

  • 搭建環(huán)境

  • 使用Seaborn進(jìn)行數(shù)據(jù)可視化

  • 可視化統(tǒng)計(jì)關(guān)系

  • 用分類數(shù)據(jù)繪圖

  • 可視化數(shù)據(jù)集的分布

什么是Seaborn?

你曾經(jīng)在R中使用過(guò)ggplot2庫(kù)嗎?它是任何工具或語(yǔ)言中最好的可視化包之一。Seaborn給了我同樣的感覺(jué)。

Seaborn是一個(gè)構(gòu)建在matplotlib之上的一個(gè)非常完美的Python可視化庫(kù)。

它使我們能夠創(chuàng)建放大的數(shù)據(jù)視覺(jué)效果。這有助于我們理解數(shù)據(jù),通過(guò)在可視上下文中顯示數(shù)據(jù)來(lái)發(fā)現(xiàn)變量或趨勢(shì)之間的任何隱藏相關(guān)性,而這些相關(guān)性最初可能并不明顯。與Matplotlib的低級(jí)接口相比,Seaborn具有高級(jí)接口。

為什么應(yīng)該使用Seaborn而不是matplotlib?

我一直在談?wù)揝eaborn是多么的棒,所以你可能想知道我為什么這么大驚小怪。

當(dāng)我們使用seaborn生成圖時(shí),我將以實(shí)際的方式全面地回答這個(gè)問(wèn)題?,F(xiàn)在,讓我們快速討論一下seaborn為什么在matplotlib之上。

Seaborn使我們的圖表和繪圖看起來(lái)很吸引人,并支持一些常見(jiàn)的數(shù)據(jù)可視化需求(比如將顏色映射到變量或使用分面(faceting))。從根本上說(shuō),它使數(shù)據(jù)可視化和探索變得很容易。相信我,這在數(shù)據(jù)科學(xué)中不是一件容易的事。

如果Matplotlib'試圖讓簡(jiǎn)單的事情變得簡(jiǎn)單,而讓困難的事情變得可能',那么seaborn也嘗試讓一組定義良好的困難事情變得簡(jiǎn)單。——邁克爾·瓦斯科姆(Seaborn的創(chuàng)始人)

在matplotlib中有幾個(gè)(很大的)限制是Seaborn已經(jīng)修復(fù)的:

  1. Seaborn提供了大量的高級(jí)接口和自定義主題,而matplotlib沒(méi)有這些接口,因?yàn)楹茈y確定哪些設(shè)置使圖表更吸引人

  2. Matplotlib函數(shù)不能很好地處理數(shù)據(jù)流,而seaborn可以

這第二點(diǎn)在數(shù)據(jù)科學(xué)中很突出,因?yàn)槲覀兘?jīng)常使用數(shù)據(jù)模型。

搭建環(huán)境

seaborn庫(kù)具有四個(gè)必需的必需依賴項(xiàng):

  • NumPy (>= 1.9.3)

  • SciPy (>= 0.14.0)

  • matplotlib (>= 1.4.3)

  • Pandas (>= 0.15.2)

要安裝Seaborn并有效地使用它,首先需要安裝前面提到的依賴項(xiàng)。一旦這一步完成,我們都準(zhǔn)備安裝Seaborn和享受其迷人的繪圖。要安裝Seaborn,可以使用以下代碼

要安裝最新版本的seaborn,你可以使用pip:

pip install seaborn

你也可以使用conda安裝最新版本的seaborn:

conda install seaborn

要在代碼中導(dǎo)入依賴項(xiàng)和seaborn本身,可以使用以下代碼

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from scipy import stats

就是這樣!我們都準(zhǔn)備好了詳細(xì)地探索seaborn。

用于數(shù)據(jù)可視化的數(shù)據(jù)集

我們將主要處理兩個(gè)數(shù)據(jù)集:

  • 人力資源分析

    (https://datahack.analyticsvidhya.com/contest/wns-analytics-hackathon-2018-1/)

  • 預(yù)測(cè)投票數(shù)

    (https://datahack.analyticsvidhya.com/contest/enigma-codefest-machine-learning-1/)

之所以選擇這兩個(gè),是因?yàn)樗鼈儼鄠€(gè)變量,因此我們有很多選擇可以使用。這兩個(gè)數(shù)據(jù)集還可以模擬現(xiàn)實(shí)情況,因此你將了解數(shù)據(jù)可視化和了解業(yè)內(nèi)的數(shù)據(jù)可視化方式。

你可以在DataHack平臺(tái)上查看這個(gè)和其他高質(zhì)量的數(shù)據(jù)集。因此,請(qǐng)?jiān)诶^續(xù)之前下載上述兩個(gè)數(shù)據(jù)集。我們將一起使用它們。

使用Seaborn進(jìn)行數(shù)據(jù)可視化

讓我們開(kāi)始吧!我已將此實(shí)現(xiàn)部分分為兩類:

  • 可視化統(tǒng)計(jì)關(guān)系

  • 繪制分類數(shù)據(jù)

我們將研究每個(gè)類別的多個(gè)示例,以及如何使用seaborn對(duì)其進(jìn)行繪制。

可視化統(tǒng)計(jì)關(guān)系

統(tǒng)計(jì)關(guān)系表示理解數(shù)據(jù)集中不同變量之間的關(guān)系以及這種關(guān)系如何影響或依賴于其他變量的過(guò)程。

在這里,我們將使用seaborn生成以下圖:

  • Scatter plot (散點(diǎn)圖)

  • SNS.relplot

  • Hue plot (Hue圖)

我選擇了預(yù)測(cè)投票數(shù)數(shù)據(jù)集。所以,讓我們導(dǎo)入數(shù)據(jù)集:

df = pd.read_csv(r'train.csv')
df.head()

使用Seaborn繪制散點(diǎn)圖

散點(diǎn)圖可能是可視化兩個(gè)變量之間關(guān)系的最常見(jiàn)的例子。每個(gè)點(diǎn)在數(shù)據(jù)集中顯示一個(gè)觀察值,這些觀察值用點(diǎn)狀結(jié)構(gòu)表示。圖中顯示了兩個(gè)變量的聯(lián)合分布。

為了繪制散點(diǎn)圖,我們將使用seaborn庫(kù)的relplot()函數(shù)。它是可視化統(tǒng)計(jì)關(guān)系的圖形級(jí)角色。默認(rèn)情況下,使用relplot會(huì)生成散點(diǎn)圖:

sns.relplot(x='Views', y='Upvotes', data = df)

Seaborn的SNS.relplot

SNS.relplot是來(lái)自SNS類的relplot函數(shù),SNS類是我們?cè)谏厦媾c其他依賴項(xiàng)一起導(dǎo)入的一個(gè)seaborn類。

這里,參數(shù)是x、y,數(shù)據(jù)有在X,Y軸上表示的變量和我們要分別畫(huà)出來(lái)的數(shù)據(jù)點(diǎn),通過(guò)圖片,我們發(fā)現(xiàn)了viewsupvotes之間的關(guān)系。

接下來(lái),如果我們想要看到與數(shù)據(jù)相關(guān)的標(biāo)簽,我們可以使用下面的代碼:

sns.relplot(x='Views', y='Upvotes', hue = 'Tag', data = df)

Hue圖

我們可以在色調(diào)(Hue)的幫助下在我們的圖片中添加另一個(gè)維度,通過(guò)為點(diǎn)賦予顏色來(lái)實(shí)現(xiàn),每種顏色都有一些附加的意義。

在上圖中,色調(diào)代表是樣本類別,這就是為什么它有一個(gè)不同的顏色。如果色調(diào)代表的只是數(shù)字,那么色調(diào)就應(yīng)該是連續(xù)的(因?yàn)閿?shù)字是連續(xù)的,樣本類別不是連續(xù)的)。

sns.relplot(x='Views', y='Upvotes', hue = 'Answers', data = df);

我們還可以更改每個(gè)點(diǎn)的大小:

sns.relplot(x='Views', y='Upvotes', size = 'Tag', data = df);

我們還可以手動(dòng)更改大小,方法是使用另一個(gè)參數(shù)size=(15,200)

用分類數(shù)據(jù)繪圖

  • 抖動(dòng)圖

  • Hue圖

  • 箱線圖

  • 小提琴圖

  • Pointplot

在上面的小節(jié)中,我們了解了如何使用不同的視圖表示來(lái)顯示多個(gè)變量之間的關(guān)系。我們繪制了兩個(gè)數(shù)值變量之間的關(guān)系圖。在本節(jié)中,我們將看到兩個(gè)變量之間的關(guān)系。例子中的數(shù)據(jù)是已分類的(分為不同的組)。

我們將使用seaborn庫(kù)的catplot()函數(shù)來(lái)繪制分類數(shù)據(jù)圖。就讓我們一探究竟吧

抖動(dòng)圖

對(duì)于抖動(dòng)圖,我們將使用另一個(gè)數(shù)據(jù)集人力資源分析來(lái)分析,讓我們現(xiàn)在導(dǎo)入該數(shù)據(jù)集。

df2 = pd.read_csv(r'train.csv')
df2.head()

現(xiàn)在,我們將使用catplot()函數(shù)查看education列和avg_training_score列之間的關(guān)系。

sns.catplot(x='education', y='avg_training_score', jitter = False,  data=df2)

我們可以看到圖表是散開(kāi)的,所以為了處理這個(gè)問(wèn)題,我們可以將抖動(dòng)設(shè)置為false。抖動(dòng)是偏離真實(shí)值。因此,我們將使用另一個(gè)參數(shù)將抖動(dòng)設(shè)置為false。

sns.catplot(x='education', y='avg_training_score', jitter = False,  data=df2)

Hue圖

接下來(lái),如果我們想在我們的圖中引入另一個(gè)變量或另一個(gè)維度,我們可以使用hue參數(shù),就像我們?cè)谏弦还?jié)中使用的一樣。假設(shè)我們希望看到教育和avg_training_score圖中的性別分布,為此,我們可以使用以下代碼

sns.catplot(x='education', y='avg_training_score', hue = 'gender', data=df2)

在上面的圖中,我們可以看到這些點(diǎn)是相互重疊的,為了消除這種情況,我們可以設(shè)置kind = 'swarm', swarm使用一種算法來(lái)防止這些點(diǎn)重疊,并且沿著分類軸調(diào)整這些點(diǎn)。我們看看它是怎樣的

sns.catplot(x='education', y='avg_training_score', kind = 'swarm', data=df2)

很神奇,對(duì)吧?如果我們想要看到引入swarmed作為第三維的版本呢?讓我們將is_promoted作為一個(gè)新變量引入

sns.catplot(x='education', y='avg_training_score', hue = 'is_promoted', kind = 'swarm', data=df2)

顯然,分?jǐn)?shù)更高的人得到了提升。

使用Seaborn的箱線圖

我們可以繪制的另一種繪圖是箱線圖 ,它顯示了分布的三個(gè)四分位值以及最終值。箱圖中的每個(gè)值都對(duì)應(yīng)于數(shù)據(jù)中的實(shí)際觀察值。讓我們現(xiàn)在繪制箱線圖

sns.catplot(x='education', y='avg_training_score', kind = 'box', data=df2)

當(dāng)我們將Hue與boxplot一起使用時(shí),它會(huì)沿著分類軸對(duì)齊,因此它們不會(huì)重疊。帶有Hue的箱線圖看起來(lái)是

sns.catplot(x='education', y='avg_training_score', hue = 'is_promoted', kind = 'box', data=df2)

使用seaborn繪制小提琴圖

我們也可以通過(guò)使用小提琴圖來(lái)不同地表示上述變量。讓我們嘗試一下

sns.catplot(x='education', y='avg_training_score', hue = 'is_promoted', kind = 'violin', data=df2)

小提琴圖結(jié)合了箱線圖和核密度估計(jì)程序,以提供更豐富的值分布描述。四分位數(shù)值顯示在小提琴內(nèi)部。當(dāng)色調(diào)語(yǔ)義參數(shù)是二值時(shí),我們還可以拆分小提琴,這也可能有助于節(jié)省繪圖空間。讓我們看一下具有不同值色調(diào)的小提琴圖。

sns.catplot(x='education', y='avg_training_score', hue = 'is_promoted', kind = 'violin', split = True, data=df2)

我開(kāi)始使用seaborn的原因就是這些美妙的圖表。它為你提供了很多顯示數(shù)據(jù)的選項(xiàng)。另一個(gè)例子是箱線圖

使用Seaborn繪制箱線圖

Boxplot對(duì)整個(gè)數(shù)據(jù)集進(jìn)行操作,默認(rèn)情況下獲取平均值。

sns.catplot(x='education', y='avg_training_score', hue = 'is_promoted', kind = 'bar', data=df2)

使用Seaborn繪制Pointplot

另一種類型的圖是pointplot,這個(gè)圖指出估計(jì)值和置信區(qū)間。Pointplot連接來(lái)自相同色調(diào)類別的數(shù)據(jù)。這有助于識(shí)別特定色調(diào)類別中的關(guān)系如何變化。你可以查看pointplot如何顯示下面的信息。

sns.catplot(x='education', y='avg_training_score', hue = 'is_promoted', kind = 'point', data=df2)從上面的圖表可以明顯看出,得分高的人更容易升職。

這不是結(jié)束,seaborn是一個(gè)巨大的庫(kù),有許多用于不同目的的繪圖函數(shù)。其中一個(gè)目的是引入多維度。我們也可以想象高維的關(guān)系。讓我們用群圖來(lái)檢驗(yàn)一下。

使用Seaborn的群圖

sns.catplot(x='education', y='avg_training_score', hue='is_promoted',
            col='gender', aspect=.9,
            kind='swarm', data=df2);

當(dāng)我們將多個(gè)概念組合成一個(gè)概念時(shí),我們很容易將這個(gè)概念形象化。這里群圖將色調(diào)語(yǔ)義屬性和性別屬性作了分面處理。

可視化數(shù)據(jù)集的分布

無(wú)論何時(shí)處理數(shù)據(jù)集,我們都想知道數(shù)據(jù)或變量是如何分布的。數(shù)據(jù)的分布可以告訴我們很多關(guān)于數(shù)據(jù)性質(zhì)的信息,所以讓我們深入研究一下。

繪制單變量分布

  • 柱狀圖

在研究變量分布時(shí),最常見(jiàn)的一個(gè)圖是柱狀圖。默認(rèn)情況下,distplot()函數(shù)繪制柱狀圖并適合內(nèi)核密度估計(jì)。讓我們看看年齡是如何分布在數(shù)據(jù)中的。

sns.distplot(df2.age)

這清楚地表明,大多數(shù)人都在二十多歲和三十多歲。

使用Seaborn的直方圖

另一種用于單變量分布的圖是直方圖。

直方圖以箱子的形式表示數(shù)據(jù)的分布,并使用條形圖來(lái)顯示每個(gè)箱子下的觀察次數(shù)。我們還可以在其中添加一個(gè)加固圖,而不是使用KDE(核密度估計(jì)),這意味著在每次觀察時(shí),它都會(huì)畫(huà)一個(gè)小的垂直標(biāo)尺。

sns.distplot(df2.age, kde=False, rug = True)

繪制雙變量分布

  • Hex圖

  • KDE 圖

  • Boxen 圖

  • Ridge 圖 (Joy圖)

除了可視化單個(gè)變量的分布外,我們還可以看到兩個(gè)獨(dú)立變量是如何相互分布的。雙變量表示關(guān)節(jié),為了將其形象化,我們使用了seaborn庫(kù)的jointplot()函數(shù)。默認(rèn)情況下,jointplot繪制散點(diǎn)圖。讓我們看看年齡和avg_training_score之間的二元分布。

sns.jointplot(x='avg_training_score', y='age', data=df2);

有多種方式可視化雙變量分布。讓我們?cè)倏磶讉€(gè)。

使用Seaborn的Hexplot

Hexplot是一個(gè)雙變量的直方圖,因?yàn)樗@示了在六邊形區(qū)域內(nèi)的觀察次數(shù)。這是一個(gè)非常容易處理大數(shù)據(jù)集的圖。為了繪制Hexplot,我們將把kind屬性設(shè)置為hex。我們現(xiàn)在就去看看。

sns.jointplot(x=df2.age, y=df2.avg_training_score, kind='hex', data = df2)

使用Seaborn的KDE圖

這還不是結(jié)束,接下來(lái)是KDE繪圖。這是另一個(gè)很好的方法來(lái)可視化雙變量分布。讓我們看看如何使用jointplot()函數(shù)并將屬性kind設(shè)置為KDE來(lái)實(shí)現(xiàn)上述觀察。

sns.jointplot(x='age', y='avg_training_score', data=df2, kind='kde');

使用Seaborn繪制Heatmaps

現(xiàn)在讓我們來(lái)談?wù)勎易钕矚g的圖表Heatmaps。Heatmaps中每個(gè)變量都表示為一種顏色。

讓我們來(lái)生成一個(gè):

corrmat = df2.corr()
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(corrmat, vmax=.8, square=True)

使用Seaborn的Boxen圖

另一個(gè)我們可以用來(lái)表示二元分布的圖是boxen圖。Boxen plot最初被命名為letter value plot(字母值圖),因?yàn)樗@示了一個(gè)變量大量的值,也稱為分位數(shù)。這些分位數(shù)也被定義為字母值。通過(guò)繪制大量的分位數(shù),可以對(duì)分布的形狀有更多的了解。這些類似于箱形圖,讓我們看看如何使用它們。

sns.catplot(x='age', y='avg_training_score', data=df2, kind='boxen',height=4, aspect=2.7, hue = 'is_promoted')

使用Seaborn繪制Ridge圖

下一個(gè)圖表相當(dāng)引人入勝。叫做Ridge圖。它也被稱為joy圖。Ridge圖有助于可視化幾個(gè)組的數(shù)值分布。這些分布可以用KDE圖或直方圖來(lái)表示?,F(xiàn)在,我們?cè)囍?huà)一個(gè)Ridge圖來(lái)表示年齡和性別的關(guān)系。

# 初始化FacetGrid對(duì)象
g = sns.FacetGrid(df2, row='gender', hue='gender', aspect=5, height=3)

# 畫(huà)出密度
g.map(sns.kdeplot, 'age', shade=True, alpha=1, lw=3.5, bw=.2)
g.map(sns.kdeplot, 'age', color='w', lw=2, bw=.2)
g.map(plt.axhline, y=0, lw=2)

# 定義并使用一個(gè)簡(jiǎn)單的函數(shù)在坐標(biāo)軸坐標(biāo)中標(biāo)記繪圖
def label(x, color, label):
    ax = plt.gca()
    ax.text(0, .2, label, color=color, ha='left', va='center', transform=ax.transAxes)
g.map(label, 'age')

# 將子圖表設(shè)置為重疊
g.fig.subplots_adjust(hspace=-.25)

# 刪除軸的細(xì)節(jié),不要讓細(xì)節(jié)影響到重疊
g.set_titles('')
g.set(yticks=[])
g.despine(bottom=True, left=True)

可視化數(shù)據(jù)集中的成對(duì)關(guān)系

我們還可以使用seaborn庫(kù)的pairplot()函數(shù)來(lái)繪制數(shù)據(jù)集中的多個(gè)二元分布。這顯示了數(shù)據(jù)庫(kù)中每一列之間的關(guān)系。并繪制各變量在對(duì)角線上的單變量分布圖。讓我們看看它是什么樣子。

sns.pairplot(df2)

結(jié)尾

我們已經(jīng)講了很多圖表了。我們看到了seaborn庫(kù)在可視化和研究數(shù)據(jù)(尤其是大型數(shù)據(jù)集)時(shí)是如何如此有效的。我們還討論了如何為不同類型的數(shù)據(jù)繪制seaborn庫(kù)的不同函數(shù)。

正如我前面提到的,學(xué)習(xí)seaborn的最佳方法是實(shí)踐它。你自己實(shí)踐產(chǎn)生的新的視圖越多,你就會(huì)變得越自信。

如需聯(lián)系EasyCharts團(tuán)隊(duì)

請(qǐng)加微信:EasyCharts

【書(shū)籍推薦】《R語(yǔ)言數(shù)據(jù)可視化之美》
【書(shū)籍推薦】《Excel 數(shù)據(jù)之美》
【手冊(cè)獲取】  國(guó)內(nèi)首款-數(shù)據(jù)可視化參考手冊(cè)
【網(wǎng)易云課堂】  Excel 商業(yè)圖表修煉秘笈之基礎(chǔ)篇
【文章匯總】 EasyCharts文章匯總

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

聯(lián)系客服