介紹
描述性分析是與資料科學或特定研究相關的任何分析生命周期中的核心組成部分之一。資料聚合,彙總與可視化是支撐資料分析這一領域的主要支柱。從傳統商業智能時代開始,即使在如今的人工智能時代,資料可視化一直是一種強大的工具,由于其能夠有效地抽象出正确的資訊,清晰直覺地了解和解釋資料結果而被很多組織廣泛地采用。然而處理通常具有兩個以上屬性的資料集時開始出現問題,因為資料分析和通信的媒介一般局限于兩個次元。在本文中,我們将探讨多元資料可視化過程中的一些有效政策。
動機
“一圖勝千言。”
這是我們很熟悉的非常流行的一句話,也是我們将了解和利用資料可視化作為資料分析的有效工具的巨大靈感和動力。永遠記住“有效的資料可視化是一門藝術,也是一門科學”。在開始之前,我還想引用一句話,這句話不僅與本文相關,還強調了資料化的必要性。
“一張圖最大的價值在于它使我們注意到我們沒有預料到的東西。”
— John Tukey
資料可視化快速回顧
本文假設一般讀者都知道用于繪圖和資料可視化的基本圖表知識,是以這裡不會對此進行詳細解釋,但是我們将在接下來的操作實驗中覆寫其大部分内容。就像著名的可視化先驅和統計學家Edward Tufte提到的那樣,資料可視化應該以資料為基礎進行“清晰,精确,高效”的模式和見解交流。
結構化資料通常包括由行表示的資料觀察值和由清單示的資料屬性或特征。每一列也可以稱為資料集的特定次元。最常見的資料類型包括連續的數值資料和離散的分類資料,是以任何資料可視化基本上以直方圖,散點圖,箱型圖等簡單易懂的方式來描述一個或多個資料屬性。接下來的介紹将涵蓋單變量(一維)和多變量(多元)的資料可視化政策,我們将在這裡使用Python機器學習生态系統,并建議您檢查進行資料分析和可視化的應用架構,包括 pandas, matplotlib, seaborn, plotly 和 bokeh等工具。另外,如果您對使用資料制作出精美而有意義的可視化結果感興趣,那麼了解D3.js也是必須的。有興趣的讀者建議您可以閱讀EdwardTufte的‘ The Visual Display ofQuantitative Information’一書。
空談無益,請看可視化的代碼實作!
讓我們開始吧,停止喋喋不休地談論理論和概念。我們将使用UCI機器學習庫提供的葡萄酒品質資料集。這些資料實際上包含兩個資料集,分别描述了葡萄牙“Vinho Verde ”葡萄酒中紅色和白色變種的多種屬性。本文中的所有分析都可以在我的GitHub庫Jupyter Notebook文檔中找到,您可以盡情嘗試!
首先我們将加載以下依賴項,以便進行後續的資料分析。
我們将主要使用 matplotlib和 seaborn作為可視化架構,您也可以自由選擇任何其他的架構進行同樣的嘗試。經過一些基本的資料預處理步驟後,我們來看看資料。
我們通過合并與紅白葡萄酒相關的資料集來建立一個單一的葡萄酒資料架構。我們還根據葡萄酒的樣品品質屬性建立了一個類别變量quality_label,接下來我們看一下資料。
wines.head()
The wine quality dataset
很顯然,我們有幾個葡萄酒樣本的數字和分類屬性,每個觀察值都屬于一個紅白葡萄酒樣本,其屬性是從實體和化學試驗中測量和獲得的特定數值。如果您想了解每個屬性的詳細解釋,可以檢視我的Jupyter筆記,但這些名稱的意思是不言而喻的。接下來讓我們對這些感興趣的屬性做一個快速的基本描述性統計。
葡萄酒類型的基本描述性統計
比較這些不同類型的葡萄酒樣本的統計方法是非常容易的,要注意一些屬性的明顯差異,稍後我們将在具體的可視化過程中展現這些内容。
單變量分析
單變量分析基本上是資料分析或可視化的最簡單的形式,我們隻需要關心和分析一個資料屬性或者變量,對一維資料進行可視化。
一維資料可視化
對所有數字資料及其分布進行可視化的最快速最有效的方法之一是利用工具pandas中的直方圖。
wines.hist(bins=15,color='steelblue', edgecolor='black', linewidth=1.0,
xlabelsize=8, ylabelsize=8,grid=False)
plt.tight_layout(rect=(0,0, 1.2, 1.2))

将屬性值作為一維資料進行可視化處理
上面的圖給出了一個将任何屬性的基本資料分布進行可視化的好想法。
接下來讓我們深入了解一個連續型數值屬性。本質上來講,直方圖或者密度圖就可以很好地了解該屬性的資料分布。
對一維連續數字類型的資料進行可視化
從上面的圖表可以很明顯地看出,葡萄酒硫酸鹽的分布存在明确的右偏。
可視化一個離散分類型資料屬性稍有不同,條形圖是最有效的方法之一。你也可以使用餅圖,但通常盡量避免使用這種形式,尤其是不同類别的數量超過3個時。
對一維離散分類的資料進行可視化
接下來我們來看高維資料的可視化。
多變量分析
多變量分析是一種趣味和複雜性并存的分析方法,接下來我們将分析多個資料次元或者屬性(2個或以上),不僅包括檢查資料分布,還包括這些屬性之間的潛在關系、模式和相關性。如果有必要的話,您也可以根據需要解決的問題,利用推理統計和假設檢驗,檢查不同屬性、群體等的統計意義。
二維資料可視化
研究不同資料屬性之間的潛在關系或相關性的最佳方法之一是利用成對相關矩陣并将其描述為一個熱圖。
用相關熱圖對二維資料可視化
您可以清楚地看到,熱圖中的梯度根據相關性的強弱而變化,很容易發現那些彼此之間具有強相關性的潛在屬性。另一種可視化的方法是對您感興趣的屬性使用成對散點圖。
用成對散點圖對二維資料進行可視化
根據上圖,您可以看到散點圖也是一種觀察二維資料屬性之間潛在關系的好方法。另一種将多個屬性的多變量資料可視化的方法是使用平行坐标。
使用平行坐标對多元資料進行可視化
基本上來講,在上圖所示的可視化中,點被表示為連接配接的線段,每條垂直線代表一個資料屬性,所有屬性中的一組完整連接配接的線段表示一個資料點。是以趨于同一類的點将會更加接近。僅僅通過觀察就可以很清楚地看到,與白葡萄酒相比,紅葡萄酒的密度稍微高一點。此外,與紅葡萄酒相比,白葡萄酒的殘餘糖分和二氧化硫總量較高,但同時紅葡萄酒的固定酸度高于白葡萄酒。您也可以從之前的統計表中檢視資料來驗證這個結論。
讓我們來看看一些可以對兩個連續的數字屬性進行可視化的方法。特别是散點圖和聯合圖,他們不僅是檢查資料模式和相關性的好方法,而且還可以檢視各個屬性的分布。
使用散點圖和聯合圖可視化二維連續數字資料
如上圖所示,左邊是散點圖,右邊是聯合圖,就像我們提到的那樣,你可以在聯合圖中檢視資料的相關性,關系以及個體分布。
那麼如何對兩個離散的分類屬性進行可視化呢?一種方法是利用單獨的塊(子圖)或切面作為分類次元之一。
使用條形圖和子圖(切面)可視化二維離散分類資料,
雖然這是一種很好的對分類資料進行可視化的方法,但正如您所看到的,使用matplotlib程式設計導緻代碼量很大。 另一個好方法是在單個圖中使用堆疊條或多個條來表示不同的屬性,通過seaborn我們可以很容易地實作這個目标。
在一個條形圖中可視化二維離散的分類資料
這個方法看起來更簡潔一些,你也可以很容易地從單一的圖中比較不同的類别。
讓我們看看在二維(基本上是數字和分類在一起)混合屬性的可視化。 一種方法是将子圖或切面與一般的直方圖或密度圖一起使用。
在二維切面和直方圖或密度圖中對混合屬性進行可視化
雖然這很好,但是再一次産生了大量的樣闆代碼,而這原本可以通過使用seaborn來避免,甚至可以通過一張圖表描述所有的圖。
在二維混合屬性中使用多元直方圖
您可以看到上面生成的圖表清晰簡潔,我們可以輕松地在各種分布之間進行比較。除此之外,箱型圖是另一種根據分類屬性中的不同值對資料組進行描繪的有效方式。 方塊圖是了解資料中四分位數值以及潛在異常值的好方法。
二維混合屬性的有效可視化方法——箱型圖
另一個類似的可視化方法是小提琴圖,這是使用核密度圖對分組數值資料可視化的另一種有效方法(描繪了不同值的資料的機率密度)。
小提琴圖是二維混合屬性的有效表示方法
您可以清楚地觀察到不同的葡萄酒硫酸鹽對應的葡萄酒品質類别的密度圖。
對二維資料可視化非常簡單,但随着次元(屬性)增加,複雜度也在上升,原因是我們被現有顯示媒介所在的二維空間所束縛。
對于三維資料,我們可以通過在圖表中采用z軸或利用子圖和切面來引入一個深度的概念。
然而,對于三維以上的資料,對其進行類似的可視化就變得更加困難,最好的方法是使用圖形的切面,顔色,形狀,大小,深度等特性,您還可以将時間作為一個次元,為其他屬性繪制一個動圖(考慮時間是資料中的次元)。看看Hans Roslin 的優秀演講,就可以得到同樣的想法!
三維資料可視化
考慮到資料中有三個屬性或次元,我們可以考慮成對散點圖并引入顔色或色調的概念來對它們進行可視化,以便在分類次元中分離出數值。
用散點圖和色調(顔色)對三維資料可視化
根據上圖,您可以對各個參數的相關性和模式進行分析,并在不同的葡萄酒中進行比較,例如,我們可以清楚地看到,與紅葡萄酒相比,白葡萄酒的總二氧化硫和殘留糖含量更高。
讓我們來看看對三個連續的數字屬性進行可視化的政策。 一種方法是用正常的長度(x軸)和寬度(y軸)表示其中的二維,将第三維表示為深度(z軸)。
通過引入深度的概念對三維數字類型的資料進行可視化
我們還可以利用正常的二維坐标軸,并将尺寸的概念作為第三維(本質上是氣泡圖),其中點的大小表示第三維資料的數量。
通過引入尺寸的概念對三維數字類型的資料進行可視化
是以,您可以看到上圖不是一個傳統的散點圖,而更接近于一個用不同氣泡的大小表示殘糖量的氣泡圖。 當然,我們所看到的這些資料呈現出來的模式并不是絕對的,通過其他兩個次元上看到的是不同的樣子。
為了對三個離散的分類屬性進行可視化,我們可以使用傳統的柱狀圖,利用色調的概念以及切面或子圖來表示第三維。Seaborn架構幫助我們在最少代碼量的情況下進行有效地繪圖。
通過引入色調和切面的概念對三維數字類型的資料進行可視化
上圖清楚地顯示了與每個次元相關的頻率,可以看到在了解相關洞察力方面是多麼容易和有效。
考慮到三個混合屬性的可視化,我們可以利用色調的概念将分組資料中的某個分類屬性分開,同時使用傳統的方式比如散點圖來對數字屬性的兩個次元進行可視化。
利用散點圖和色調概念在三維空間中對混合屬性進行可視化
是以,色調作為類别或組的一個很好的分隔符,盡管上面所觀察到的相關性不強或非常弱,但我們仍然可以從這些圖中了解到,與白葡萄酒相比,紅葡萄酒中所含的硫酸鹽略高一些。您還可以使用核密度圖而不是散點圖來了解三維資料。
利用核密度圖和色調概念,在三維空間中對混合屬性進行可視化。
很明顯,與白葡萄酒相比,紅葡萄酒樣品的硫酸鹽含量更高。你也可以根據色調的強度檢視密度的大小。
如果我們要分析三個次元中的多個分類屬性,可以利用色調和一個正常坐标軸來處理資料,并使用如箱形圖或小提琴圖來對不同的資料組進行可視化。
利用拆分的小提琴圖和色調的概念,在三維空間中對混合屬性進行可視化。
根據上圖,在右邊的三維可視化圖中,x軸表示葡萄酒品質,wine_type表示色調, 我們可以清楚地得到一些有趣的發現,如紅葡萄酒與白葡萄酒相比,揮發性酸度更高。
您也可以考慮使用箱形圖通過類似的方式表示具有多個分類變量的混合屬性。
利用箱形圖和色調的概念,在三維空間中對混合屬性進行可視化。
我們可以看到,對于quality和quality_label屬性,葡萄酒酒精含量會随着品質的提高而增加;按照品質等級來分析,與白葡萄酒相比,紅葡萄酒的中值酒精含量稍微高一點。 然而,如果看具體的葡萄酒級别,在較低級别的葡萄酒(3&4)中,白葡萄酒的中值酒精含量大于紅葡萄酒;與白葡萄酒相比,紅葡萄酒的平均酒精含量通常略高一些。
四維資料可視化
基于之前的讨論,我們可以利用圖表的各種元件進行多元可視化。 對四維資料可視化的一種方法是将深度和色調用作散點圖等正常圖形的特定資料次元。
利用散點圖和色調和深度的概念對四維資料進行可視化
從上圖可以明顯看出色調是表示wine_type屬性的,此外,由于圖表的天然複雜性,解讀這些可視化資料開始變得困難,但仍然可以得到一些資訊,例如紅葡萄酒的固定酸度更高,白葡萄酒的殘糖量更高。當然,如果酒精和固定酸度之間有某種聯系,我們可能會看到一個資料點逐漸增加或減少的趨勢。
另一種政策是保留二維圖,但使用色調和資料點大小作為資料次元。 通常情況下,這将是一個類似于我們之前進行可視化的氣泡圖。
利用氣泡圖與色調和尺寸的概念,對四維資料進行可視化
我們使用色調來表示wine_type,用資料點大小來表示殘糖量。我們确實看到了與前面的圖表相似的模式,而白葡萄酒的氣泡尺寸通常較大,表明白葡萄酒的殘糖比較高。
如果我們需要用兩個分類屬性表示更多的東西,可以重複利用色調和切面的概念來描述這些屬性,以及像散點圖這樣的正常圖來表示數字屬性。讓我們看幾個例子。
利用散點圖以及色調和切面的概念對四維資料進行可視化
這種可視化的有效性可以通過我們能夠很容易地發現多個模式的事實來驗證。白葡萄酒的揮發性酸度較低,高品質葡萄酒的酸度也較低。同樣基于白葡萄酒樣品,高品質的葡萄酒具有較高的酒精含量,而低品質的葡萄酒的酒精含量最低!
讓我們用其他一些屬性來建立一個類似的例子,并進行四維可視化。
我們清楚地看到,高品質葡萄酒的總二氧化硫含量較低,如果您對葡萄酒的成分有必要的了解,就會知道這個結論非常重要。我們還發現,紅葡萄酒的總二氧化硫含量低于白葡萄酒,但是在其他幾個資料點上,紅葡萄酒的酸度卻更高。
五維資料可視化
讓我們再次遵循上一節所述的類似政策,利用各種繪圖元件,在五個次元中可視化資料。除了用正常軸代表其他兩個次元,我們使用深度,色調和尺寸來表示三個資料次元。 由于我們使用尺寸的概念,我們将會畫出一個三維氣泡圖。
利用氣泡圖和色調,深度和尺寸的概念,對五維資料進行可視化
這個圖表描述了我們在前一節中讨論的相同模式和見解,同時也可以看到,根據表示二氧化硫總量的點的大小,與紅葡萄酒相比,白葡萄酒的二氧化硫總量更高。
利用氣泡圖和色調,切面和大小的概念,對五維資料進行可視化。
除了深度之外,我們還可以使用切面和色調來表示這五個資料次元中的多個分類屬性。表示大小的屬性之一可以是數字的(連續)或者甚至是分類的(但是我們可能需要用代表資料點大小的數字來表示它)。 雖然因為缺乏分類屬性,我們在這裡并沒有對此進行描述,但是您可以在自己的資料集上進行嘗試。
這基本上是另一種替代方法來對我們以前繪制的圖進行五維可視化。 雖然在觀察之前繪制的圖表時,表示深度的附加次元可能會讓很多人感到困惑,但由于切面的優勢,這個圖依然在二維平面上保持有效,是以通常更有效且易于解釋。
我們已經看到,處理如此多的資料次元變得越來越複雜! 會不會有人在想,為什麼不增加更多的次元呢?讓我們來試試看吧!
六維資料可視化
希望接下來的嘗試更加有趣。讓我們在可視化中添加另一個資料次元,除了正常的兩個軸,我們将利用深度,色調,大小和形狀,來描述所有六個資料次元。
利用散點圖和色調,深度,形狀和大小的概念,對六維資料進行可視化
這是六個次元在一個圖中。我們用形狀表示葡萄酒的屬性quality_label ,用高(平方像素),中(X标記)和低(圓)表示葡萄酒的品質,葡萄酒類型以色調表示,深度表示固定酸度,資料點大小表示總二氧化硫含量。
解釋這些似乎有點費力,但當您嘗試了解正在發生什麼的時候,請考慮以下幾部分。
1.考慮形狀和Y軸,與低品質的葡萄酒相比,中高品質的葡萄酒酒精含量更高;
2.考慮色調和大小,白葡萄酒的總二氧化硫含量比紅葡萄酒要高。
3.考慮深度和色調,與紅葡萄酒相比,白葡萄酒具有較低的固定酸度。
4.考慮色調和x軸,紅葡萄酒與白葡萄酒相比殘糖量較低。
5.考慮色調和形狀,白葡萄酒與紅葡萄酒相比似乎具有更高的品質(可能是由于白葡萄酒的樣本量較大)。
我們還可以去掉深度的概念并将切面用于分類屬性,來建立6維可視化,
利用散點圖和色調,切面和大小的概念,以六維可視化資料
是以,在這種情況下,我們利用色調和切面來表示三個分類屬性,并使用兩個正常坐标軸和大小來表示六維資料可視化的三個數字屬性。
結論
資料可視化既是一門藝術,也是一門科學。 如果您正在閱讀本文,我真的很贊賞您在閱讀這篇文章時的做出的努力。本文的目的不是為了記憶任何事情,也不是要給出一套固定的資料可視化規則。 這裡的主要目标是了解和學習一些有效的資料可視化政策,特别是當維數開始增加時,希望您将這些代碼用于将來可視化自己的資料集。歡迎在評論中留下您的回報意見,并分享您自己的資料可視化的有效政策,尤其是如果您可以做得更好。
本文中使用的所有代碼和資料集都可以從我的GitHub通路得到。
原文釋出時間為:2018-03-1
本文作者:Dipanjan Sarka