很多人以為數據科學的重頭戲是建模型、跑演算法。事實是,整個流程裡最花時間的環節,是在你開始分析之前:把資料從「不能用」變成「能用」。這篇講的就是這件事。
作者:王駿瑋 David Ishayahu ・ 2026-06-22 ・ 閱讀約 10 分鐘
數據清洗(Data Cleaning)就是把原始數據從「不能用」變成「能分析」的過程。
你去超市買菜回來,不會直接丟進鍋裡。要洗、要切、要把爛掉的部分挑掉。數據也一樣。從各種系統撈出來的原始資料,格式亂七八糟,缺值到處都是,偶爾還有明顯錯誤的數字(比如某個人的年齡填了 -5)。
不處理這些問題就直接跑模型,出來的結果不會有意義。垃圾進,垃圾出(Garbage In, Garbage Out),這句話在數據科學裡是鐵律。
2016 年 CrowdFlower(現為 Appen)的調查顯示,數據科學家花在數據清洗上的時間佔整體工作的 60%,而且有 57% 的人認為這是最不愉快的環節。Forbes 在同年引用這份數據時,把範圍拉到「資料收集 + 清洗」合計約 80%。
為什麼這麼耗時?因為真實世界的數據天生就是髒的。不同系統的欄位名稱不同、人工輸入會打錯字、感測器會偶爾當機產生空值。
處理完一種問題,常常會冒出下一種。這就是數據清洗的本質:它不是一個步驟,是一連串的判斷和取捨。
不管你分析的是碳排放數據還是用戶行為數據,遇到的問題幾乎都逃不出這五種:
某些欄位是空的。可能是沒填、系統沒記錄到、或是那個時間點根本沒有數據。處理方式看情境:刪掉、補平均值、或用模型預測。
日期有的寫 2026/06/22,有的寫 Jun 22, 2026。金額有的帶逗號,有的不帶。單位有的用公斤,有的用噸。不統一就沒辦法計算。
同一筆交易記錄出現兩次。通常發生在多系統合併的時候。不清除會讓統計結果膨脹。
數值明顯偏離正常範圍。某個月的用電量突然是平常的 50 倍,可能是輸入錯誤,也可能是真的發生了什麼事。要判斷是刪除還是保留。
應該是數字的欄位存了文字(比如把「N/A」填進溫度欄位),或是日期欄位被存成純文字。程式讀到會直接報錯。
每個專案的細節不同,但大架構都差不多。以下是我們在研究室處理數據時常用的順序:
不要急著處理,先觀察。用 df.info() 看每個欄位的型別和非空數量,用 df.describe() 看數值分佈,用 df.head(20) 肉眼掃前 20 筆。
這一步的目的是建立直覺:這份數據大概有多髒、問題集中在哪些欄位。
缺失值的處理沒有標準答案,看你的數據和目的:
把所有日期轉成 datetime、金額去掉逗號轉成 float、單位統一成同一個基準。
這一步通常不難,但很瑣碎。每種格式需要不同的轉換邏輯,而且經常碰到你沒預期到的特殊格式。
重複值用 df.drop_duplicates() 就能處理。異常值比較麻煩,要先定義「什麼叫異常」。
常用的方法:IQR(四分位距)法,把落在 Q1 - 1.5×IQR 以下或 Q3 + 1.5×IQR 以上的值標記為異常。但別無腦刪,先查原因。ZRIMATA 的健康數據分析裡,一個「異常」的體溫讀數,可能是感測器故障,也可能是真的有狀況。
清洗完不代表沒問題。跑一次 df.isnull().sum() 確認沒有殘留缺值,畫幾張分佈圖確認數值範圍合理,抽樣幾筆人工檢查。
CertiCarb 在處理碳排放數據時,清洗後會用已知基準值(benchmark)做交叉比對。如果某家工廠的每噸鋼碳排放量低於業界最低值的一半,那大概是清洗過程有問題,不是這家工廠真的那麼厲害。
如果一份數據有 30% 的列含缺值,全刪掉就等於丟了將近三分之一的數據。先看缺值的分佈,只刪真正不可修復的。
改壞了想回去,但原始檔案已經被覆蓋。永遠在清洗前先存一份 raw 版本。
三個月後回來看,完全不記得自己當初為什麼刪了那些列、補了那些值。每一步清洗操作都要寫註釋,這是可重現性(Reproducibility)的基本功。
數據清洗(Data Cleaning)是把原始數據從「不能用」變成「能分析」的過程。包括處理缺失值、統一格式、移除重複資料、偵測並處理異常值。在整個數據科學流程中,清洗通常佔 60% 到 80% 的工作時間。
因為真實世界的數據天生就是髒的。不同系統產出的格式不同、人工輸入會打錯字、感測器會偶爾當機產生空值。每一種髒法都需要不同的處理策略,而且處理完一種,常常會冒出下一種。
Python 的 pandas 函式庫是最主流的選擇。它提供了完整的缺值處理(fillna、dropna)、型別轉換(astype)、重複值移除(drop_duplicates)等功能。搭配 numpy 做數值計算,能處理九成以上的清洗需求。
數據清洗只是數據科學流程的第一步。想了解清洗完之後的特徵工程、建模、視覺化怎麼做?
看數據科學的完整流程本內容僅供學習參考。數據清洗的具體策略需依據實際數據特性和分析目的調整,本文所述方法不構成任何專業數據分析服務之保證。