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