python绘图矩阵散点图_Python实践:seaborn的散点图矩阵(Pairs Plots)可视化数据
如何快速創建強大的可視化探索性數據分析,這對于現在的商業社會來說,變得至關重要。今天我們就來,談一談如何使用python來進行數據的可視化!
一旦你有了一個很好的被清理過的數據集,下一步就是探索性數據分析(EDA)。EDA是確定數據可以告訴我們的過程,我們使用EDA來查找模式、關系或異常情況,以便指導我們后續的工作。然而在EDA中有很多的方法,但最有效的工具之一是對圖(也稱為散點圖矩陣)。散點圖矩陣讓我們看到了兩個變量之間的關系。散點圖矩陣是識別后續分析趨勢的好方法,幸運的是,它們很容易用Python實現!
在本文中,我們將通過使用seaborn可視化庫在Python中進行對圖的繪制和運行。我們將看到如何創建默認配對圖以快速檢查我們的數據,以及如何自定義可視化以獲取更深入的洞察力。該項目的代碼在GitHub上以Jupyter Notebook的形式提供。在這個項目中,我們將探索一個真實世界的數據集,由GapMinder收集的國家級社會經濟數據組成。
Seaborn的散點圖矩陣(Pairs Plots)
在開始之前,我們需要知道我們有什么數據。我們可以將社會經濟數據用熊貓(Pandas)數據框加載并查看列:
每行數據代表一個國家在一年內的結果,列中包含變量(這種格式的數據稱為整潔數據)。有2個分類專欄(國家和大陸)和4個數字專欄。這些專欄包括:life_exp是幾年出生時的預期壽命,pop是人口,gdp_per_cap是以國際美元為單位的人均國內生產總值。
雖然后面我們將使用分類變量進行著色,但seaborn中的默認對圖僅繪制了數字列。創建默認的散點圖矩陣很簡單:我們加載到seaborn庫并調用pairplot函數,將它傳遞給我們的數據框:
我仍然驚訝于一行簡單的代碼就可以完成我們整個需求!散點圖矩陣建立在兩個基本圖形上,直方圖和散點圖。對角線上的直方圖允許我們看到單個變量的分布,而上下三角形上的散點圖顯示了兩個變量之間的關系。例如,第二行中最左邊的圖表顯示life_exp與年份的散點圖。
默認的散點圖矩陣圖經常給我們提供有價值的見解。我們看到人均預期壽命和人均GDP是正相關的,這表明高收入國家的人們傾向于更長壽(盡管這當然不能證明導致其他人也是如此)。它也似乎看起來是全世界的預期壽命隨著時間的推移而上升。為了在未來的圖中更好地顯示這些變量,我們可以通過取這些值的對數來轉換這些列:
雖然這種制圖本身可以用于分析,但我們可以發現,通過對諸如大陸這樣的分類變量進行數字著色,使其更有價值。這在seaborn中非常簡單!我們所需要做的就是在hue中使用sns.pairplot函數調用使用關鍵字:
現在我們看到大洋洲和歐洲的人均預期壽命最高,亞洲人口最多。請注意,我們對人口和gdp的日志轉換使這些變量正態分布,從而更全面地表示值。
上圖更具信息性,但仍然存在一些問題:找不到疊加的直方圖,就像在對角線上那樣,它非常易于理解。顯示來自多個類別的單變量分布的更好方法是密度圖。我們可以在函數調用中交換柱狀圖的密度圖。當我們處理它時,我們會將一些關鍵字傳遞給散點圖,以更改點的透明度,大小和邊緣顏色。
對角線上的密度圖比堆積條更容易比較各大洲之間的分布。改變散點圖的透明度可以提高可讀性,因為這些數字有相當多的重疊(稱為重疊繪圖)。
作為pairplot默認的最后一個例子,讓我們通過繪制2000年后的年份來減少數據混亂。我們仍然會按照大陸分布著色,但現在我們不會繪制年份列。為了限制繪制的列,我們將一個列表傳遞vars給函數。為了說明情節,我們還可以添加標題。
這開始看起來很不錯!如果我們要進行建模,我們可以使用這些圖中的信息來幫助我們進行選擇。例如,我們知道log_gdp_per_cap與life_exp正相關,所以我們可以創建一個線性模型來量化這種關系。對于這篇文章,我們將堅持繪圖,如果我們想要更多地探索我們的數據,我們可以使用PairGrid類自定義散點圖矩陣。
使用PairGrid進行自定義
與sns.pairplot函數相反,sns.PairGrid是一個類,它意味著它不會自動填充我們的網格plot。相反,我們創建一個類實例,然后將特定函數映射到網格的不同部分。要用我們的數據創建一個PairGrid實例,我們使用下面的代碼,這也限制了我們將顯示的變量:
如果我們要顯示它,我們會得到一個空白圖,因為我們沒有將任何函數映射到網格部分。有三個網格部分填寫PairGrid:上三角形、下三角形和對角線。要將網格映射到這些部分,我們使用grid.map?部分中的方法。例如,要將散點圖映射到我們使用的上三角形:
該map_upper方法接受任何兩個變量數組(如plt.scatter)和關聯的關鍵字(如color)的函數。該map_lower方法完全相同,但填充網格的下三角形。因為它需要在接受單個陣列(記住對角線僅示出了一個變量)的函數略有不同。一個例子是plt.hist我們用來填寫下面的對角線部分:
在這種情況下,我們在下三角形中使用2-D(密度圖)的核密度估計值。放在一起,這段代碼給了我們下面的圖:
使用PairGrid類的真正好處在于我們想要創建自定義函數來將不同的信息映射到圖上。例如,我可能想要將兩個變量之間的Pearson相關系數添加到散點圖中。為此,我會編寫一個函數,它接受兩個數組、計算統計量,然后在圖上繪制它。下面的代碼顯示了這是如何完成的(歸功于這個Stack Overflow答案):
我們的新函數映射到上三角形,因為我們需要兩個數組來計算相關系數(還要注意我們可以將多個函數映射到網格部分)。這會產生以下圖形:
相關系數現在出現在散點圖上方。這是一個相對直接的例子,但我們可以使用PairGrid將我們想要的任何函數映射到圖上。我們可以根據需要添加盡可能多的信息,只要我們能夠弄清楚如何編寫函數!作為最后一個例子,這里是一個顯示對角線而不是網格的匯總統計圖。
它顯示了我們只做圖標的總體思路,除了使用庫中的任何現有功能(例如matplotlib將數據映射到圖上)之外,我們還可以編寫自己的函數來顯示自定義信息。
結論
散點圖矩陣是快速探索數據集中的分布和關系的強大工具。Seaborn提供了一個簡單的默認方法,可以通過Pair Grid類來定制和擴展散點圖矩陣。在一個數據分析項目中,價值的主要部分往往不在于浮華的機器學習,而在于直觀的數據可視化。散點圖舉證為我們提供了全面的數據分析,是數據分析項目的一個很好的起點。
數十款阿里云產品限時折扣中,趕緊點擊領劵開始云上實踐吧!
本文由阿里云云棲社區組織翻譯。
文章原標題《visualizing-data-with-pair-plots-in-python》,
譯者:虎說八道,審校:袁虎。
文章為簡譯,更為詳細的內容,請查看原文。
總結
以上是生活随笔為你收集整理的python绘图矩阵散点图_Python实践:seaborn的散点图矩阵(Pairs Plots)可视化数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业微信加密消息体_微信公众平台开发者中
- 下一篇: linux 4t磁盘格式化,centos