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

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python實踐:seaborn的散點圖矩陣(Pairs Plots)可視化數(shù)據(jù)

摘要: 如何快速創(chuàng)建強大的可視化探索性數(shù)據(jù)分析,這對于現(xiàn)在的商業(yè)社會來說,變得至關(guān)重要。今天我們就來,談一談如何使用python來進行數(shù)據(jù)的可視化!

如何快速創(chuàng)建強大的可視化探索性數(shù)據(jù)分析,這對于現(xiàn)在的商業(yè)社會來說,變得至關(guān)重要。今天我們就來,談一談如何使用python來進行數(shù)據(jù)的可視化!

一旦你有了一個很好的被清理過的數(shù)據(jù)集,下一步就是探索性數(shù)據(jù)分析(EDA)。EDA是確定數(shù)據(jù)可以告訴我們的過程,我們使用EDA來查找模式、關(guān)系或異常情況,以便指導(dǎo)我們后續(xù)的工作。然而在EDA中有很多的方法,但最有效的工具之一是對圖(也稱為散點圖矩陣)。散點圖矩陣讓我們看到了兩個變量之間的關(guān)系。散點圖矩陣是識別后續(xù)分析趨勢的好方法,幸運的是,它們很容易用Python實現(xiàn)!

在本文中,我們將通過使用seaborn可視化庫在Python中進行對圖的繪制和運行。我們將看到如何創(chuàng)建默認(rèn)配對圖以快速檢查我們的數(shù)據(jù),以及如何自定義可視化以獲取更深入的洞察力。該項目的代碼在GitHub上以Jupyter Notebook的形式提供。在這個項目中,我們將探索一個真實世界的數(shù)據(jù)集,由GapMinder收集的國家級社會經(jīng)濟數(shù)據(jù)組成。

Seaborn的散點圖矩陣(Pairs Plots)

在開始之前,我們需要知道我們有什么數(shù)據(jù)。我們可以將社會經(jīng)濟數(shù)據(jù)用熊貓(Pandas)數(shù)據(jù)框加載并查看列:

每行數(shù)據(jù)代表一個國家在一年內(nèi)的結(jié)果,列中包含變量(這種格式的數(shù)據(jù)稱為整潔數(shù)據(jù))。有2個分類專欄(國家和大陸)和4個數(shù)字專欄。這些專欄包括:life_exp是幾年出生時的預(yù)期壽命,pop是人口,gdp_per_cap是以國際美元為單位的人均國內(nèi)生產(chǎn)總值。

雖然后面我們將使用分類變量進行著色,但seaborn中的默認(rèn)對圖僅繪制了數(shù)字列。創(chuàng)建默認(rèn)的散點圖矩陣很簡單:我們加載到seaborn庫并調(diào)用pairplot函數(shù),將它傳遞給我們的數(shù)據(jù)框:

# Seaborn visualization libraryimport seaborn as sns# Create the default pairplotsns.pairplot(df)

我仍然驚訝于一行簡單的代碼就可以完成我們整個需求!散點圖矩陣建立在兩個基本圖形上,直方圖和散點圖。對角線上的直方圖允許我們看到單個變量的分布,而上下三角形上的散點圖顯示了兩個變量之間的關(guān)系。例如,第二行中最左邊的圖表顯示life_exp與年份的散點圖。

默認(rèn)的散點圖矩陣圖經(jīng)常給我們提供有價值的見解。我們看到人均預(yù)期壽命和人均GDP是正相關(guān)的,這表明高收入國家的人們傾向于更長壽(盡管這當(dāng)然不能證明導(dǎo)致其他人也是如此)。它也似乎看起來是全世界的預(yù)期壽命隨著時間的推移而上升。為了在未來的圖中更好地顯示這些變量,我們可以通過取這些值的對數(shù)來轉(zhuǎn)換這些列:

# Take the log of population and gdp_per_capitadf['log_pop'] = np.log10(df['pop'])df['log_gdp_per_cap'] = np.log10(df['gdp_per_cap'])# Drop the non-transformed columnsdf = df.drop(columns = ['pop', 'gdp_per_cap'])

雖然這種制圖本身可以用于分析,但我們可以發(fā)現(xiàn),通過對諸如大陸這樣的分類變量進行數(shù)字著色,使其更有價值。這在seaborn中非常簡單!我們所需要做的就是在hue中使用sns.pairplot函數(shù)調(diào)用使用關(guān)鍵字:

sns.pairplot(df, hue = 'continent')

現(xiàn)在我們看到大洋洲和歐洲的人均預(yù)期壽命最高,亞洲人口最多。請注意,我們對人口和gdp的日志轉(zhuǎn)換使這些變量正態(tài)分布,從而更全面地表示值。

上圖更具信息性,但仍然存在一些問題:找不到疊加的直方圖,就像在對角線上那樣,它非常易于理解。顯示來自多個類別的單變量分布的更好方法是密度圖。我們可以在函數(shù)調(diào)用中交換柱狀圖的密度圖。當(dāng)我們處理它時,我們會將一些關(guān)鍵字傳遞給散點圖,以更改點的透明度,大小和邊緣顏色。

# Create a pair plot colored by continent with a density plot of the # diagonal and format the scatter plots.sns.pairplot(df, hue = 'continent', diag_kind = 'kde', plot_kws = {'alpha': 0.6, 's': 80, 'edgecolor': 'k'}, size = 4)

對角線上的密度圖比堆積條更容易比較各大洲之間的分布。改變散點圖的透明度可以提高可讀性,因為這些數(shù)字有相當(dāng)多的重疊(稱為重疊繪圖)。

作為pairplot默認(rèn)的最后一個例子,讓我們通過繪制2000年后的年份來減少數(shù)據(jù)混亂。我們?nèi)匀粫凑沾箨懛植贾?,但現(xiàn)在我們不會繪制年份列。為了限制繪制的列,我們將一個列表傳遞vars給函數(shù)。為了說明情節(jié),我們還可以添加標(biāo)題。

# Plot colored by continent for years 2000-2007sns.pairplot(df[df['year'] >= 2000], vars = ['life_exp', 'log_pop', 'log_gdp_per_cap'], hue = 'continent', diag_kind = 'kde', plot_kws = {'alpha': 0.6, 's': 80, 'edgecolor': 'k'}, size = 4);# Title plt.suptitle('Pair Plot of Socioeconomic Data for 2000-2007', size = 28);

這開始看起來很不錯!如果我們要進行建模,我們可以使用這些圖中的信息來幫助我們進行選擇。例如,我們知道log_gdp_per_cap與life_exp正相關(guān),所以我們可以創(chuàng)建一個線性模型來量化這種關(guān)系。對于這篇文章,我們將堅持繪圖,如果我們想要更多地探索我們的數(shù)據(jù),我們可以使用PairGrid類自定義散點圖矩陣。

使用PairGrid進行自定義與sns.pairplot函數(shù)相反,sns.PairGrid是一個類,它意味著它不會自動填充我們的網(wǎng)格plot。相反,我們創(chuàng)建一個類實例,然后將特定函數(shù)映射到網(wǎng)格的不同部分。要用我們的數(shù)據(jù)創(chuàng)建一個PairGrid實例,我們使用下面的代碼,這也限制了我們將顯示的變量:

# Create an instance of the PairGrid class.grid = sns.PairGrid(data= df_log[df_log['year'] == 2007], vars = ['life_exp', 'log_pop', 'log_gdp_per_cap'], size = 4)

如果我們要顯示它,我們會得到一個空白圖,因為我們沒有將任何函數(shù)映射到網(wǎng)格部分。有三個網(wǎng)格部分填寫PairGrid:上三角形、下三角形和對角線。要將網(wǎng)格映射到這些部分,我們使用grid.map 部分中的方法。例如,要將散點圖映射到我們使用的上三角形:

# Map a scatter plot to the upper trianglegrid = grid.map_upper(plt.scatter, color = 'darkred')

該map_upper方法接受任何兩個變量數(shù)組(如plt.scatter)和關(guān)聯(lián)的關(guān)鍵字(如color)的函數(shù)。該map_lower方法完全相同,但填充網(wǎng)格的下三角形。因為它需要在接受單個陣列(記住對角線僅示出了一個變量)的函數(shù)略有不同。一個例子是plt.hist我們用來填寫下面的對角線部分:

# Map a histogram to the diagonalgrid = grid.map_diag(plt.hist, bins = 10, color = 'darkred', edgecolor = 'k')# Map a density plot to the lower trianglegrid = grid.map_lower(sns.kdeplot, cmap = 'Reds')

在這種情況下,我們在下三角形中使用2-D(密度圖)的核密度估計值。放在一起,這段代碼給了我們下面的圖:

使用PairGrid類的真正好處在于我們想要創(chuàng)建自定義函數(shù)來將不同的信息映射到圖上。例如,我可能想要將兩個變量之間的Pearson相關(guān)系數(shù)添加到散點圖中。為此,我會編寫一個函數(shù),它接受兩個數(shù)組、計算統(tǒng)計量,然后在圖上繪制它。下面的代碼顯示了這是如何完成的(歸功于這個Stack Overflow答案):

# Function to calculate correlation coefficient between two arraysdef corr(x, y, **kwargs): # Calculate the value coef = np.corrcoef(x, y)[0][1] # Make the label label = r'$\rho$ = ' + str(round(coef, 2)) # Add the label to the plot ax = plt.gca() ax.annotate(label, xy = (0.2, 0.95), size = 20, xycoords = ax.transAxes) # Create a pair grid instancegrid = sns.PairGrid(data= df[df['year'] == 2007], vars = ['life_exp', 'log_pop', 'log_gdp_per_cap'], size = 4)# Map the plots to the locationsgrid = grid.map_upper(plt.scatter, color = 'darkred')grid = grid.map_upper(corr)grid = grid.map_lower(sns.kdeplot, cmap = 'Reds')grid = grid.map_diag(plt.hist, bins = 10, edgecolor = 'k', color = 'darkred');

我們的新函數(shù)映射到上三角形,因為我們需要兩個數(shù)組來計算相關(guān)系數(shù)(還要注意我們可以將多個函數(shù)映射到網(wǎng)格部分)。這會產(chǎn)生以下圖形:

相關(guān)系數(shù)現(xiàn)在出現(xiàn)在散點圖上方。這是一個相對直接的例子,但我們可以使用PairGrid將我們想要的任何函數(shù)映射到圖上。我們可以根據(jù)需要添加盡可能多的信息,只要我們能夠弄清楚如何編寫函數(shù)!作為最后一個例子,這里是一個顯示對角線而不是網(wǎng)格的匯總統(tǒng)計圖。

它顯示了我們只做圖標(biāo)的總體思路,除了使用庫中的任何現(xiàn)有功能(例如matplotlib將數(shù)據(jù)映射到圖上)之外,我們還可以編寫自己的函數(shù)來顯示自定義信息。

結(jié)論

散點圖矩陣是快速探索數(shù)據(jù)集中的分布和關(guān)系的強大工具。Seaborn提供了一個簡單的默認(rèn)方法,可以通過Pair Grid類來定制和擴展散點圖矩陣。在一個數(shù)據(jù)分析項目中,價值的主要部分往往不在于浮華的機器學(xué)習(xí),而在于直觀的數(shù)據(jù)可視化。散點圖舉證為我們提供了全面的數(shù)據(jù)分析,是數(shù)據(jù)分析項目的一個很好的起點。

本文由阿里云云棲社區(qū)組織翻譯。

文章原標(biāo)題《visualizing-data-with-pair-plots-in-python》,

譯者:虎說八道,審校:袁虎。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
可視化 | 讓矩陣在散點圖中動起來
Python數(shù)據(jù)可視化:用Seaborn繪制高端玩家版散點圖
Python Seaborn綜合指南,成為數(shù)據(jù)可視化專家
用Seaborn繪制圖表
seaborn關(guān)聯(lián)圖表之折線圖和散點圖
Seaborn常見繪圖總結(jié)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服