用Python程式碼實現5種最好的、簡單的資料視覺化!

人工智慧頻道發表於2018-11-06

資料視覺化是資料科學家工作的重要組成部分。在專案的早期階段,您通常會進行探索性資料分析(EDA)以獲得對資料的一些見解。建立視覺化確實有助於使事情更清晰、更容易理解,尤其是對於更大、更高維度的資料集。在專案即將結束時,能夠以清晰、簡潔和引人注目的方式呈現您的最終結果非常重要,以便您的受眾(通常是非技術客戶)能夠理解。

Matplotlib是一個流行的Python庫,可用於輕鬆建立資料視覺化。但是,每次執行新專案時,設定資料、引數、數字和繪圖都會變得相當混亂和乏味。在這篇博文中,我們將看看6個資料視覺化,並使用Python的Matplotlib為它們編寫一些快速簡便的函式。與此同時,這是一個很好的圖表,可以為工作選擇正確的視覺化!

用Python程式碼實現5種最好的、簡單的資料視覺化!


散點圖

散點圖非常適合顯示兩個變數之間的關係,因為您可以直接檢視資料的原始分佈。您還可以透過對組進行顏色編碼來簡單地檢視不同資料組的這種關係,如下圖所示。想要想象三個變數之間的關係?沒問題!只需使用另一個引數(如點大小)來編碼第三個變數,我們可以在下面的第二個圖中看到。

用Python程式碼實現5種最好的、簡單的資料視覺化!


用Python程式碼實現5種最好的、簡單的資料視覺化!


現在來看程式碼。我們首先使用別名“plt”匯入Matplotlib的pyplot。為了建立一個新的情節圖,我們呼叫plt.subplots()。將x軸和y軸資料傳遞給函式,然後將它們傳遞給ax.scatter()以繪製散點圖。我們還可以設定磅值、點顏色和Alpha透明度。您甚至可以將y軸設定為對數刻度。然後專門為圖形設定標題和軸標籤。這很容易使用一個端到端建立散點圖的函式!

用Python程式碼實現5種最好的、簡單的資料視覺化!


線形圖

當您可以清楚地看到一個變數與另一個變數差異很大,即它們具有高協方差時,最好使用線圖。我們來看看下圖來說明,可以清楚地看到,所有專業的百分比隨時間變化很大。使用散點圖繪製這些圖形會非常混亂,這使得我們很難真正理解並看到發生了什麼。線圖非常適合這種情況,因為它們基本上可以快速總結兩個變數的協方差(百分比和時間)。同樣,我們也可以透過顏色編碼進行分組。

用Python程式碼實現5種最好的、簡單的資料視覺化!


這是線形圖的程式碼。它與上面的散點非常相似。只有一些變數的微小變化。

用Python程式碼實現5種最好的、簡單的資料視覺化!


直方圖

直方圖可用於檢視(或實際發現)資料點的分佈。檢視下面的直方圖,我們繪製頻率與IQ直方圖。我們可以清楚地看到中心的濃度和中位數。我們還可以看到它遵循高斯分佈。使用條(而不是散點)確實可以清楚地看到每個箱的頻率之間的相對差異。使用分檔(離散化)確實有助於我們看到“更大的影像”,而如果我們使用所有資料點而沒有離散分檔,視覺化中可能會有很多噪聲,這使得很難看到真正發生了什麼。

用Python程式碼實現5種最好的、簡單的資料視覺化!


Matplotlib中直方圖的程式碼如下所示。有兩個引數需要注意。首先,n_bins引數控制我們的直方圖所需的離散區數。更多的bins會給我們更好的資訊,但也可能會引入噪音;另一方面,較少的bins給我們提供了更多的“鳥瞰圖”,並且沒有更精細的細節,更能瞭解正在發生的事情。其次,累積引數是一個布林值,它允許我們選擇我們的直方圖是否累積。這基本上是選擇機率密度函式(PDF)或累積密度函式(CDF)。

用Python程式碼實現5種最好的、簡單的資料視覺化!


想象一下,我們想要比較資料中兩個變數的分佈。有人可能會認為你必須製作兩個單獨的直方圖並將它們並排放置以進行比較。但是,實際上有更好的方法:我們可以用不同的透明度覆蓋直方圖。看看下圖,統一分佈設定為透明度為0.5,以便我們可以看到它背後的內容。這允許使用者直接在同一圖上檢視兩個分佈。

用Python程式碼實現5種最好的、簡單的資料視覺化!


在程式碼中為疊加的直方圖設定了一些東西。首先,我們設定水平範圍以適應兩個變數分佈。根據這個範圍和所需的箱數,我們實際上可以計算每個箱的寬度。最後,我們在同一個圖上繪製兩個直方圖,其中一個直方圖略微透明。

用Python程式碼實現5種最好的、簡單的資料視覺化!


條形圖

當您嘗試視覺化具有少量(可能<10個)類別的分類資料時,條形圖最有效。如果我們的類別太多,那麼圖中的條形圖將非常混亂並且難以理解。它們適用於分類資料,因為您可以根據條形圖的大小(即幅度)輕鬆檢視類別之間的差異;類別也很容易劃分顏色編碼。我們將看到3種不同型別的條形圖:常規、分組和堆疊。隨著我們的進展,請檢視下圖中的程式碼。

常規的條形圖在下面的第一個圖中。在barplot()函式中,x_data表示x軸上的程式碼,y_data表示y軸上的條形高度。誤差條是以每個條形為中心的額外線條,可以繪製以顯示標準偏差。

分組條形圖允許我們比較多個分類變數。看看下面的第二個條形圖。我們比較的第一個變數是分數如何按組(G1,G2,......等組)變化。我們還將性別本身與顏色程式碼進行比較。看一下程式碼,y_data_list變數現在實際上是一個列表,其中每個子列表代表一個不同的組。然後我們遍歷每個組,對於每個組,我們在x軸上繪製每個刻度線的條形圖;每組也有顏色編碼。

堆積條形圖非常適合視覺化不同變數的分類構成。在下面的堆積條形圖中,我們將比較日常的伺服器負載。透過顏色編碼堆疊,我們可以輕鬆檢視和了解哪些伺服器每天工作最多,以及負載如何與所有日期的其他伺服器進行比較。此程式碼遵循與分組條形圖相同的樣式。我們遍歷每個組,除了這次我們在舊組之上而不是在它們旁邊繪製新條。

用Python程式碼實現5種最好的、簡單的資料視覺化!


用Python程式碼實現5種最好的、簡單的資料視覺化!


用Python程式碼實現5種最好的、簡單的資料視覺化!


用Python程式碼實現5種最好的、簡單的資料視覺化!


直方圖

我們之前檢視過直方圖,這些直方圖非常適合視覺化變數的分佈。但是如果我們需要更多資訊呢?也許我們想要更清晰地看待標準偏差?也許中位數與均值有很大不同,因此我們有很多異常值?如果存在這樣的偏差並且許多值集中在一邊怎麼辦?

這就是箱形圖出現的原因。箱形圖給出了上述所有資訊。實線框的底部和頂部始終是第一和第三四分位數(即資料的25%和75%),框內的頻帶始終是第二個四分位數(中位數)。晶須(即帶有條形末端的虛線)從盒子中伸出,以顯示資料的範圍。

由於為每個組/變數繪製了框圖,因此很容易設定。x_data是組/變數的列表。Matplotlib函式boxplot()為y_data的每一列或序列y_data中的每個向量建立一個盒子圖;因此,x_data中的每個值對應於y_data中的列/向量。我們所要設定的只是情節的美學。

用Python程式碼實現5種最好的、簡單的資料視覺化!


用Python程式碼實現5種最好的、簡單的資料視覺化!


結論

使用Matplotlib可以實現5種快速簡便的資料視覺化。將事物抽象為函式總是使程式碼更易於閱讀和使用!我希望你喜歡這篇文章並學到一些新的和有用的東西。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2218852/,如需轉載,請註明出處,否則將追究法律責任。

相關文章