調查數據並從中提取信息和趨勢的工具。
數據可視化在數據挖掘中起著非常重要的作用。各種數據科學家花費了他們的時間通過可視化來探索數據。為了加快這一進程,我們需要有合適的工具。
沒有規劃的情況下,資源也無法轉化為有價值的商品。因此,我希望本文能夠為您提供關於所有可視化方法的架構。
目錄
簡介了解你的數據分布曲線a. 直方圖b. 聯合圖c. 配對圖d. Rug圖分布圖a. 條形圖b. 統計圖c. 箱型圖d. Violin圖高級繪製方法a. Strip圖b. Swarm圖矩陣圖a. Heat Mapb. Cluster Map網格a. Facet Grid回歸圖簡介
Seaborn是一個基於matplotlib的Python數據可視化庫。它提供了一個高級界面,以繪製曲線和信息統計圖形。
您可以在命令行中運行以下任何一個命令來安裝Seaborn。
pip install seabornconda install seaborn
運行以下命令可以導入seaborn。
import seaborn as sns
了解你的數據
圖中使用的數據集為著名的泰坦尼克數據集(圖1),下面將數據集用變量df表示。
分布曲線
我們可以使用這些圖來理解數據的平均值、中位數、範圍、方差、偏差等。
a. 直方圖
Dist plot給出了所選連續變量的直方圖。這是單變量分析的一個例子。我們可以改變箱子的數量,即直方圖中垂直條的數量import seaborn as snssns.distplot(x = df['age'], bins = 10)
這裡x軸表示年齡,y軸表示頻率。例如,對於Bins= 10的分布圖,大約有50個人年齡在0到10歲之間b.聯合圖
它是兩個變量的組合。這是一個二元分析的例子。我們還得到了變量之間的散點圖來反映它們的線性關係。我們可以自定義散點圖為六邊形圖,其中,顏色越深,出現的次數就越多。import seaborn as sns# For Plot 1sns.jointplot(x = df['age'], y = df['Fare'], kind = 'scatter')# For Plot 2sns.jointplot(x = df['age'], y = df['Fare'], kind = 'hex')
我們可以看到,年齡和票價之間並沒有合適的線性關係。kind = ' hex '提供了六邊形圖,kind = ' reg '提供了圖形上的回歸線。c.配對圖
它取數據的所有數值屬性,繪製兩個不同變量的兩兩散點圖和同一變量的直方圖。import seaborn as snssns.pairplot(df)
d.Rug圖
它畫了一條線,而不是像在直方圖中那樣二維分布圖。這是單變量分析的一個例子。import seaborn as snssns.rugplot(x = df['Age'])
分類圖
這些圖幫助我們理解分類變量。我們可以用它們進行單變量和雙變量分析。
a.條形圖
這是一個二元分析的例子。在x軸上有一個分類變量,在y軸上有一個連續變量。import seaborn as snssns.barplot(x = df['Sex'], y = df['Fare'])
我們可以推斷出女性的平均票價比男性高。b.統計圖
它計算分類變量出現的次數。這是單變量分析的一個例子。import seaborn as snssns.countplot(df['Pclass'])
c.箱型圖
這是一個總結圖。它給出了一個連續變量的最大值、最小值、平均值、第一個四分位數和第三個四分位數的信息。同時,它讓我們掌握了離群值的信息。我們可以對一個連續變量進行繪圖,也可以根據一個連續變量分析不同的分類變量。import seaborn as sns#For plot 1sns.countplot(df['Pclass'])#For plot 2sns.boxplot(y = df['Age'], x = df['Sex'])
d.Violin圖
它類似於箱型圖,但它也提供了關於數據分布的補充信息。
import seaborn as snssns.violinplot(y = df['Age'], x = df['Sex'])
高級繪製方法
a.strip圖
這是一個連續變量和分類變量之間的圖。它以散點圖為主,但補充使用分類變量的分類編碼。import seaborn as snssns.stripplot(y = df['Age'], x = df['Pclass'])
我們可以看到,1班和2班沒有10歲左右的兒童,60歲以上的兒童多集中在1班。通常,這種圖被用來填補缺失值。b.swarm圖
這是一個strip圖和violin圖的結合。除了數據點的數量,它還提供了它們各自的分布。import seaborn as snssns.swarmplot(y = train['Age'], x = train['Pclass'])
矩陣圖
這些是使用二維矩陣數據進行可視化的特殊類型的圖形。由於矩陣數據的維數較大,很難對其進行分析和可視化。因此,通過為矩陣數據提供顏色編碼,使這個更容易。
a.熱力圖
在給定的原始數據集「df」中,我們有七個數值變量。那麼,讓我們在這七個變量之間生成一個相關矩陣。df.corr()
雖然只有49個值,但要讀取每個值似乎非常困難。因為我們遍歷數以千計的特徵。所以,讓我們嘗試實現一些顏色編碼,這會大大簡化模型。sns.heatmap(df.corr(), annot = True, cmap = 'viridis')
同樣的矩陣現在表達了更多的信息。另一個非常明顯的例子是使用heatmap來理解缺失的值。在圖14中,黃色的虛線表示一個缺失的值,因此它使我們的任務更容易識別缺失的值。sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')
b.聚類圖
如果我們有一個矩陣數據,並想要根據其相似性對一些特徵進行分組,聚類映射可以幫助我們。先看一下熱圖(圖13),然後再看一下聚類圖(圖15)。sns.clustermap(tran.corr(), annot='True',cmap='viridis')
x-label和y-label是一樣的,但是它們協調的方式不同。這是因為它們是根據它們的相似性分組的。頂部和左側的類似流程圖的結構描述了它們的相似程度。聚類圖使用層次聚類來形成不同的集群。網格
網格圖為我們提供了對可視化的更多控制,並通過一行代碼繪製各種各樣的圖形。
a.面網格
假設我們想要繪製所有三類票中男性和女性的年齡分布,我們總共有6個圖。sns.FacetGrid(train, col = 'Pclass', row = 'Sex').map(sns.distplot, 'Age')
面網格可以按要求提供非常清晰的圖形。sns.FacetGrid( col = 『col』, row = 『row』, data = data) 提供一個包含col和行中所有唯一類別的空網格。之後,我們可以使用不同的圖和常見的變量來進行特殊的變化。回歸圖
這是一個更高級的統計圖,它提供了散點圖以及對數據的線性擬合。
sns.lmplot(x = 'Age', y = 'PassengerId', data = df, hue = 'Sex)
圖17為男女乘客身份證與年齡的線性回歸擬合。
總結
在本文中,我們看到了14種使用seaborn的可視化技術。
我相信數據可視化增強了我們對數據解釋的理解和潛力。它給我們提供了更令人滿意的技能來表示數據,輸入缺失值,識別異常值,檢測異常,以及更多。
數據分析師就像警察一樣,需要詢問數據並通過它們得到信息。使用合適的工具來完成這項工作是非常必要的。因此,我希望這篇文章能夠成為您查詢數據的工具。
作者:Aayush Ostwal
deephub翻譯組:孟翔傑