全自動化資料洞察!資料分佈對比視覺化!⛵

ShowMeAI發表於2022-12-16
全自動化資料洞察!資料分佈對比視覺化!⛵

? 作者:韓信子@ShowMeAI
? 資料分析實戰系列https://www.showmeai.tech/tutorials/40
? 本文地址https://www.showmeai.tech/article-detail/411
? 宣告:版權所有,轉載請聯絡平臺與作者並註明出處
? 收藏ShowMeAI檢視更多精彩內容

? 引言

全自動化資料洞察!資料分佈對比視覺化!⛵

視覺化是EDA的基礎。當面對一個新的、未知的資料集時,視覺檢查使我們能夠了解可用的資訊,繪製一些有關資料的模式,並診斷出我們可能需要解決的幾個問題。在這方面,?Pandas Profiling 一直是每個資料科學家工具箱中不可或缺的瑞士刀,可以幫助我們快速生成資料摘要報告,包括資料概覽、變數屬性、資料分佈、重複值和其他指標。它能夠在視覺化中呈現這些資訊,以便我們更好地理解資料集。但如果我們能夠比較兩個資料集呢,有沒有快速的方式可以實現?

全自動化資料洞察!資料分佈對比視覺化!⛵

在本篇部落格文章中,ShowMeAI將介紹如何利用 Pandas Profiling 的比較報告功能來提升資料探索分析 (EDA) 流程。我們會介紹到如何使用 Pandas Profiling 比較報告功能來比較兩個不同的資料集,這可以幫助我們更快地對比分析資料,獲取分佈差異,為後續做準備。

我們本次用到的資料集是 ?Kaggle 的 HCC 資料集,大家可以透過 ShowMeAI 的百度網盤地址下載。

? 實戰資料集下載(百度網盤):公眾號『ShowMeAI研究中心』回覆『實戰』,或者點選 這裡 獲取本文 [42]Pandas Profiling:使用高階EDA工具對比分析2個資料集HCC 資料集

ShowMeAI官方GitHubhttps://github.com/ShowMeAI-Hub

全自動化資料洞察!資料分佈對比視覺化!⛵

關於更多資料自動化探索工具,可以參考ShowMeAI過往文章 ?自動化資料分析 (EDA) 工具庫大全

? 全自動資料EDA工具 Pandas Profiling 功能回顧

我們回顧一下 Pandas Profiling 的安裝與使用方式:

# 透過pip安裝
pip install pandas-profiling==3.5.0

如果我們需要對 hcc 資料集進行分析,參考程式碼如下:

import pandas as pd
from pandas_profiling import ProfileReport


# Read the HCC Dataset
df = pd.read_csv("hcc.csv")


# Produce the data profiling report
original_report = ProfileReport(df, title='Original Data')
original_report.to_file("original_report.html")

我們會得到非常清晰的資料分析結果報告,如下是報告的頭部資訊:

全自動化資料洞察!資料分佈對比視覺化!⛵

Alerts部分對資料進行分析後,給出了4種主要型別的潛在分析結果,包含可能有的風險和處理方式:

  • Duplicates :資料中有 4 個重複行;
  • Constant :'O2'是常量欄位,求職999
  • High Correlation :有強相關性的幾個特徵;
  • Missing :“Ferritin”欄位存在缺失值。

? 資料處理

這對這些問題我們可以做一些處理。

? 刪除重複行

在資料集中,有些特徵非常具體,涉及到個人的生物測量值,比如血紅蛋白、MCV、白蛋白等。所以,很難有多個患者報告所有特徵的相同精確值。因此,我們可以從資料中刪除這些重複項。

# Drop duplicate rows
df_transformed = df.copy()
df_transformed = df_transformed.drop_duplicates()

? 刪除不相關的特徵

在資料分析過程中,有些特徵可能不具有太多價值,比如 O2 常數值。刪除這些特徵將有助於模型的開發。

# Remove O2
df_transformed = df_transformed.drop(columns='O2')

? 缺失資料插補

資料插補是用於處理缺失資料的方法。它允許我們在不刪除觀察值的情況下填補缺失值。均值插補是最常見和最簡單的統計插補技術,它使用特徵的均值來填充缺失值。我們將使用均值插補來處理 HCC 資料集中的缺失資料。

# Impute Missing Values
from sklearn.impute import SimpleImputer
mean_imputer = SimpleImputer(strategy="mean")
df_transformed['Ferritin'] = mean_imputer.fit_transform(df_transformed['Ferritin'].values.reshape(-1,1))

? 資料並行對比分析

下面我們就進入高階功能部分了!我們在對1份資料分析後,如果希望有另外一份資料能夠比對分析,怎麼做呢。下面我們以處理前後的資料為例,來講解這個分析的實現方式:

transformed_report = ProfileReport(df_transformed, title="Transformed Data")
comparison_report = original_report.compare(transformed_report)
comparison_report.to_file("original_vs_transformed.html") 

最後的對比報告如下:

全自動化資料洞察!資料分佈對比視覺化!⛵

我們可以從資料集概述中立即瞭解什麼?

  • 轉換後的資料集包含更少的分類特徵("O2"已被刪除)
  • 165個觀察值(而原來的171個包括重複項)
  • 沒有缺失值(與原始資料集中的79個缺失觀察值形成對比)

這種轉變如何影響我們的資料質量?這些決定是否很好?我們發現在刪除重複記錄方面,沒有特別的影響,資料缺失和資料分佈有一些變化,如下圖所示:

全自動化資料洞察!資料分佈對比視覺化!⛵

從上述圖解中,可以看出一些資訊,比如對於“鐵蛋白”欄位,插補資料的均值估算值導致原始資料分佈被扭曲。這樣處理可能是有問題的,我們應該避免使用均值估算來替換缺失值。在這種情況下,應該使用其他方法來處理缺失值,例如刪除缺失值或使用其他統計方法來估算缺失值。

全自動化資料洞察!資料分佈對比視覺化!⛵

也可以透過相互作用和相關性的視覺化來觀察到這一點,在“鐵蛋白”與其他特徵之間的關係中,會出現不一致的相互作用模式和更高的相關值。

全自動化資料洞察!資料分佈對比視覺化!⛵

上圖為鐵蛋白與年齡之間的相互作用,估算值顯示在對應於平均值的垂直線上。

全自動化資料洞察!資料分佈對比視覺化!⛵

上圖為相關性情況對比,鐵蛋白相關值似乎在資料插補後增加。

? 總結

在本篇內容中,ShowMeAI講解了 pandas-profiling 工具對不同資料進行對比分析的方法,我們用處理前後的資料做了一個簡單的講解,實際這個方法也可以用到訓練集和測試集的對比中,用於發現資料漂移等問題。

全自動化資料洞察!資料分佈對比視覺化!⛵

關於資料漂移,可以參考ShowMeAI的文章 ?機器學習資料漂移問題與解決方案

參考資料

推薦閱讀

? 資料分析實戰系列https://www.showmeai.tech/tutorials/40
? 機器學習資料分析實戰系列https://www.showmeai.tech/tutorials/41
? 深度學習資料分析實戰系列https://www.showmeai.tech/tutorials/42
? TensorFlow資料分析實戰系列https://www.showmeai.tech/tutorials/43
? PyTorch資料分析實戰系列https://www.showmeai.tech/tutorials/44
? NLP實戰資料分析實戰系列https://www.showmeai.tech/tutorials/45
? CV實戰資料分析實戰系列https://www.showmeai.tech/tutorials/46
? AI 面試題庫系列https://www.showmeai.tech/tutorials/48

全自動化資料洞察!資料分佈對比視覺化!⛵

相關文章