1. 程式人生 > 實用技巧 >資料視覺化實用教程

資料視覺化實用教程

作者|Soner Yıldırım
編譯|VK
來源|Towards Data Science

探索性資料分析(EDA)是資料科學或機器學習管道的重要組成部分。為了使用資料建立一個健壯且有價值的產品,你需要研究資料,理解變數之間的關係,以及資料的底層結構。資料視覺化是EDA中最有效的工具之一。

在這篇文章中,我們將嘗試使用視覺化功能來研究客戶流失資料集:https://www.kaggle.com/sonalidasgupta95/churn-prediction-of-bank-customers

我們將建立許多不同的視覺化效果,並嘗試在每一個視覺化中引入Matplotlib或Seaborn庫的一個特性。

我們首先匯入相關庫並將資料集讀入pandas資料幀。

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid')
%matplotlib inline

df = pd.read_csv("/content/Churn_Modelling.csv")

df.head()

該資料集包含10000個客戶(即行)和14個關於銀行客戶及其產品的特徵。這裡的目標是使用所提供的特徵來預測客戶是否會流失(即退出=1)。

讓我們從catplot開始,這是Seaborn庫的一個分類圖。

sns.catplot(x='Gender', y='Age', data=df, hue='Exited', height=8, aspect=1.2)

研究發現:45到60歲的人比其他年齡段的人更容易離職(即離開公司)。女性和男性之間沒有太大的差別。

hue引數用於根據類別變數區分資料點。

下一個視覺化是散點圖,它顯示了兩個數值變數之間的關係。讓我們看看客戶的工資和餘額是否相關。

plt.figure(figsize=(12,8))

plt.title("Estimated Salary vs Balance", fontsize=16)

sns.scatterplot(x='Balance', y='EstimatedSalary', data=df)

我們第一次使用matplotlib.pyplot介面來建立Figure物件並設定標題。然後,我們用Seaborn在這個圖形物件上畫出了實際的圖表。

研究結果:估計工資與餘額之間不存在有意義的關係或相關性。餘額似乎具有正態分佈(不包括餘額為零的客戶)。

下一個視覺化是箱線圖,它顯示了一個變數在中位數和四分位數上的分佈。

plt.figure(figsize=(12,8))

ax = sns.boxplot(x='Geography', y='Age', data=df)

ax.set_xlabel("Country", fontsize=16)
ax.set_ylabel("Age", fontsize=16)

我們還使用set_xlabel和set_ylabel調整了x和y軸的字型大小。

以下是箱線圖:

中值是所有點排序時中間的點。Q1(第一個或下四分位數)是資料集下半部分的中值。Q3(第三或上四分位數)是資料集上半部分的中值。

因此,箱線圖為我們提供了關於分佈和異常值的概念。在我們建立的箱線圖中,頂部有許多異常值(用點表示)。

發現:年齡變數的分佈是右偏的。由於上側的異常值,平均值大於中值。

在變數的單變數分佈中可以觀察到右偏態。讓我們建立一個distplot來觀察分佈。

plt.figure(figsize=(12,8))

plt.title("Distribution of Age", fontsize=16)

sns.distplot(df['Age'], hist=False)

右邊的尾巴比左邊的重。原因是我們在箱線圖上觀察到的異常值。

distplot在預設情況下也提供了一個直方圖,但是我們使用hist引數更改了它。

Seaborn庫還提供了不同型別的pair圖,這些圖提供了變數之間成對關係的概述。讓我們先從資料集中隨機抽取一個樣本,使曲線圖更具吸引力。原始資料集有10000個觀測值,我們將選取一個包含100個觀測值和4個特徵的樣本。

subset=df[['CreditScore','Age','Balance','EstimatedSalary']].sample(n=100)

g = sns.pairplot(subset, height=2.5)

在對角線上,我們可以看到變數的直方圖。網格的另一部分表示變數與變數之間的關係。

另一個觀察成對關係的工具是熱圖,它採用矩陣並生成彩色編碼圖。熱圖主要用於檢查特徵和目標變數之間的相關性。

讓我們首先使用pandas的corr函式建立一些特徵的相關矩陣。

corr_matrix = df[['CreditScore','Age','Tenure','Balance',
'EstimatedSalary','Exited']].corr()

我們現在可以繪製這個矩陣。

plt.figure(figsize=(12,8))

sns.heatmap(corr_matrix, cmap='Blues_r', annot=True)

發現:“年齡”和“餘額”列與客戶流失呈正相關。


隨著資料量的增加,分析和探索資料變得越來越困難。視覺化是探索性資料分析中的一個重要工具,當它被有效和恰當地使用時,它就有了強大的力量。視覺化也有助於向你的聽眾傳達資訊或告訴他們你的發現。

沒有一種適合所有型別的視覺化方法,因此某些任務需要不同型別的視覺化。根據任務的不同,不同的選擇可能更合適。所有視覺化都有一個共同點,那就是它們是探索性資料分析和資料科學中講故事部分的好工具。

原文連結:https://towardsdatascience.com/a-practical-guide-for-data-visualization-9f1a87c0a4c2

歡迎關注磐創AI部落格站:
http://panchuang.net/

sklearn機器學習中文官方文件:
http://sklearn123.com/

歡迎關注磐創部落格資源彙總站:
http://docs.panchuang.net/