Python中怎么使用Seaborn繪制常用圖表,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
葉城網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
Seaborn是構(gòu)建在matplotlib之上的數(shù)據(jù)可視化庫,與Python中的pandas數(shù)據(jù)結(jié)構(gòu)緊密集成。可視化是Seaborn的核心部分,可以幫助探索和理解數(shù)據(jù)。
要了解Seaborn,就必須熟悉Numpy和Matplotlib以及pandas。
Seaborn提供以下功能:
面向數(shù)據(jù)集的API來確定變量之間的關(guān)系。
線性回歸曲線的自動計(jì)算和繪制。
它支持對多圖像的高級抽象繪制。
可視化單變量和雙變量分布。
這些只是Seaborn提供的功能的一部分,還有很多其他功能,我們可以在這里探索所有的功能。
要引入Seaborn庫,使用的命令是:
import seaborn as sns
使用Seaborn,我們可以繪制各種各樣的圖形,如:
分布曲線
餅圖和柱狀圖
散點(diǎn)圖
配對圖
熱力圖
在文章中,我們使用從Kaggle下載的谷歌Playstore數(shù)據(jù)集。
我們可以將Seaborn的分布圖與Matplotlib的直方圖進(jìn)行比較。它們都提供非常相似的功能。這里我們畫的不是直方圖中的頻率圖,而是y軸上的近似概率密度。
我們將在代碼中使用sns.distplot()來繪制分布圖。
在進(jìn)一步之前,首先,讓我們訪問我們的數(shù)據(jù)集,
import pandas as pd
import numpy as np
pstore = pd.read_csv("googleplaystore.csv")
pstore.head(10)
數(shù)據(jù)集是這樣的,
現(xiàn)在,讓我們看看如果我們繪制來自上述數(shù)據(jù)集的“Rating”列的分布圖是怎樣的,
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Create a distribution plot for rating
sns.distplot(pstore.Rating)
plt.show()
Rating列的分布圖是這樣的,
在這里,曲線(KDE)顯示在分布圖上的是近似的概率密度曲線。
與matplotlib中的直方圖類似,在分布方面,我們也可以改變類別的數(shù)量,使圖更容易理解。
我們只需要在代碼中加上類別的數(shù)量,
#Change the number of bins
sns.distplot(inp1.Rating, bins=20, kde = False)
plt.show()
圖像是這樣的,
在上圖中,沒有概率密度曲線。要移除曲線,我們只需在代碼中寫入' kde = False '。
我們還可以向分布圖提供與matplotlib類似的容器的標(biāo)題和顏色。讓我們看看它的代碼,
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Create a distribution plot for rating
sns.distplot(pstore.Rating, bins=20, color="g")
plt.title("Distribution of app ratings", fontsize=20, color = 'red')
plt.show()
同一列Rating的分布圖是這樣的:
對Seaborn圖形進(jìn)行樣式化
使用Seaborn的最大優(yōu)勢之一是,它為圖形提供了廣泛的默認(rèn)樣式選項(xiàng)。
這些是Seaborn提供的默認(rèn)樣式。
'Solarize_Light2',
'_classic_test_patch',
'bmh',
'classic',
'dark_background',
'fast',
'fivethirtyeight',
'ggplot',
'grayscale',
'seaborn',
'seaborn-bright',
'seaborn-colorblind',
'seaborn-dark',
'seaborn-dark-palette',
'seaborn-darkgrid',
'seaborn-deep',
'seaborn-muted',
'seaborn-notebook',
'seaborn-paper',
'seaborn-pastel',
'seaborn-poster',
'seaborn-talk',
'seaborn-ticks',
'seaborn-white',
'seaborn-whitegrid',
'tableau-colorblind10'
我們只需要編寫一行代碼就可以將這些樣式合并到我們的圖中。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Adding dark background to the graph
plt.style.use("dark_background")
#Create a distribution plot for rating
sns.distplot(pstore.Rating, bins=20, color="g")
plt.title("Distribution of app ratings", fontsize=20, color = 'red')
plt.show()
在將深色背景應(yīng)用到我們的圖表后,分布圖看起來是這樣的,
餅圖通常用于分析數(shù)字變量在不同類別之間如何變化。
在我們使用的數(shù)據(jù)集中,我們將分析內(nèi)容Rating欄中的前4個類別的執(zhí)行情況。
首先,我們將對內(nèi)容Rating列進(jìn)行一些數(shù)據(jù)清理/挖掘,并檢查其中的類別。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Analyzing the Content Rating column
pstore['Content Rating'].value_counts()
類別列表是,
根據(jù)上面的輸出,由于“只有18歲以上的成年人”和“未分級”的數(shù)量比其他的要少得多,我們將從內(nèi)容分級中刪除這些類別并更新數(shù)據(jù)集。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Remove the rows with values which are less represented
pstore = pstore[~pstore['Content Rating'].isin(["Adults only 18+","Unrated"])]
#Resetting the index
pstore.reset_index(inplace=True, drop=True)
#Analyzing the Content Rating column again
pstore['Content Rating'].value_counts()
更新后在“Rating”欄中出現(xiàn)的類別是:
現(xiàn)在,讓我們?yōu)镽ating列中出現(xiàn)的類別繪制餅圖。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Plotting a pie chart
plt.figure(figsize=[9,7])
pstore['Content Rating'].value_counts().plot.pie()
plt.show()
上面代碼的餅狀圖如下所示,
從上面的餅圖中,我們不能正確的推斷出“所有人10+”和“成熟17+”。當(dāng)這兩類人的價值觀有點(diǎn)相似的時候,很難評估他們之間的差別。
我們可以通過將上述數(shù)據(jù)繪制成柱狀圖來克服這種情況。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Plotting a bar chart
plt.figure(figsize=[9,7])
pstore['Content Rating'].value_counts().plot.barh()
plt.show()
柱狀圖如下所示,
與餅圖類似,我們也可以定制柱狀圖,使用不同的柱狀圖顏色、圖表標(biāo)題等。
到目前為止,我們只處理數(shù)據(jù)集中的一個數(shù)字列,比如評級、評論或大小等。但是,如果我們必須推斷兩個數(shù)字列之間的關(guān)系,比如“評級和大小”或“評級和評論”,會怎么樣呢?
當(dāng)我們想要繪制數(shù)據(jù)集中任意兩個數(shù)值列之間的關(guān)系時,可以使用散點(diǎn)圖。此圖是機(jī)器學(xué)習(xí)領(lǐng)域的最強(qiáng)大的可視化工具。
讓我們看看數(shù)據(jù)集評級和大小中的兩個數(shù)字列的散點(diǎn)圖是什么樣子的。首先,我們將使用matplotlib繪制圖,然后我們將看到它在seaborn中的樣子。
使用matplotlib的散點(diǎn)圖
#import all the necessary libraries
#Plotting the scatter plot
plt.scatter(pstore.Size, pstore.Rating)
plt.show()
圖是這樣的
使用Seaborn的散點(diǎn)圖
在直方圖和散點(diǎn)圖的代碼中,我們將使用sn .joinplot()。
sns.scatterplot()散點(diǎn)圖的代碼。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Plotting the same thing now using a jointplot
sns.jointplot(pstore.Size, pstore.Rating)
plt.show()
上面代碼的散點(diǎn)圖如下所示,
在seaborn中使用散點(diǎn)圖的主要優(yōu)點(diǎn)是,我們將同時得到散點(diǎn)圖和直方圖。
如果我們想在代碼中只看到散點(diǎn)圖而不是組合圖,只需將其改為“scatterplot”
回歸曲線
回歸圖在聯(lián)合圖(散點(diǎn)圖)中建立了2個數(shù)值參數(shù)之間的回歸線,并有助于可視化它們的線性關(guān)系。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Plotting the same thing now using a jointplot
sns.jointplot(pstore.Size, pstore.Rating, kind = "reg")
plt.show()
圖是這樣的,
從上圖中我們可以推斷出,當(dāng)app的價格上升時,評級會穩(wěn)步上升。
當(dāng)我們想要查看超過3個不同數(shù)值變量之間的關(guān)系模式時,可以使用配對圖。例如,假設(shè)我們想要了解一個公司的銷售如何受到三個不同因素的影響,在這種情況下,配對圖將非常有用。
讓我們?yōu)閿?shù)據(jù)集的評論、大小、價格和評級列創(chuàng)建一對圖。
我們將在代碼中使用sns.pairplot()一次繪制多個散點(diǎn)圖。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Plotting the same thing now using a jointplot
sns.pairplot(pstore[['Reviews', 'Size', 'Price','Rating']])
plt.show()
上面圖形的輸出圖形是這樣的,
對于非對角視圖,圖像是兩個數(shù)值變量之間的散點(diǎn)圖
對于對角線視圖,它繪制一個柱狀圖,因?yàn)閮蓚€軸(x,y)是相同的。
熱圖以二維形式表示數(shù)據(jù)。熱圖的最終目的是用彩色圖表顯示信息的概要。它利用了顏色強(qiáng)度的概念來可視化一系列的值。
我們在足球比賽中經(jīng)常看到以下類型的圖形,
在Seaborn中創(chuàng)建這個類型的圖。
我們將使用sn .heatmap()繪制可視化圖。
當(dāng)你有以下數(shù)據(jù)時,我們可以創(chuàng)建一個熱圖。
上面的表是使用來自Pandas的透視表創(chuàng)建的。
現(xiàn)在,讓我們看看如何為上表創(chuàng)建一個熱圖。
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
##Plot a heat map
sns.heatmap(heat)
plt.show()
在上面的代碼中,我們已經(jīng)將數(shù)據(jù)保存在新的變量“heat”中。
熱圖如下所示,
我們可以對上面的圖進(jìn)行一些自定義,也可以改變顏色梯度,使最大值的顏色變深,最小值的顏色變淺。
更新后的代碼是這樣的,
#importing all the libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#Applying some customization to the heat map
sns.heatmap(heat, cmap = "Greens", annot=True)
plt.show()
上面代碼的熱圖是這樣的,
看完上述內(nèi)容,你們掌握Python中怎么使用Seaborn繪制常用圖表的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!