資料預處理步驟:如何清理企業資料
了解如何透過資料預處理步驟,將雜亂的企業記錄轉化為可靠的洞察,並附中小企業實例。看看 ELECTE 如何將這些步驟自動化。

你匯出了一份看起來已經整理好的銷售資料。訂單、成本和日期都填滿了試算表。接著,一份預測報告送到財務主管桌上,平均訂單金額卻突然上升,而產品目錄明明沒有任何變動。
這種跳升通常是預處理出錯,而不是客戶購買行為改變。在檔案裡仍有重複發票時就填補空白價格,或是在保留任何資料列之前就對整份匯出資料進行縮放,都會讓模型提前學到不該看到的資訊。大多數文章會把資料預處理步驟當作可以任意順序套用的獨立技巧來列舉,但真正讓結果被高估的,正是順序問題。
以下是我建議分析師在處理正在使用的業務檔案時採用的流程。你會看到執行順序、我視為起點而非鐵律的門檻值,以及鎖定每項擬合設定的方法,讓下一次資料載入沿用相同的處理流程。
依正確順序執行的七個資料預處理步驟
一份銷售匯出資料看起來可能很完整,卻仍藏有重複的發票列、空白的單位成本,以及兩種格式並存的日期。如果清理順序錯誤,之後的每個平均值都會繼承這些問題。
任何需要從資料中學習數值的步驟,都必須在資料拆分之後執行。若以整份檔案計算平均值、中位數或縮放範圍,驗證資料列就會影響訓練。這樣得出的評分看起來會比模型在下個月訂單上的實際表現更好。
步驟 | 操作內容 | 完成標準 |
|---|---|---|
1. 檢視與清理 | 檢查列數、資料類型與空值比例;刪除完全重複的資料;統一日期與標籤格式 | 取得乾淨的基礎資料表,每個類別只有一個標籤 |
2. 拆分資料 | 隨機打亂資料列,再分為訓練集與驗證集 | 已建立兩個資料集,且尚未計算任何需從資料學習的設定 |
3. 處理缺失值 | 刪除資料列、刪除該特徵,或僅使用訓練資料進行填補 | 每個欄位皆已完整,或缺漏處已標示 |
4. 編碼與特徵工程 | 將類別轉換為數值;建立比率、時間component與移動平均 | 取得可供模型使用的特徵表,各欄位皆有文件說明 |
5. 處理離群值 | 先確認極端值,再進行封頂、轉換或標記 | 極端值皆有合理解釋,而非憑空猜測 |
6. 數值特徵縮放 | 以訓練資料擬合縮放器,再套用至驗證資料 | 數值欄位的範圍具有可比性 |
7. 固定處理流程 | 儲存所有已擬合的轉換,讓新資料依循相同路徑處理 | 流程可重複執行,適用於每次載入的新資料 |
假設一家零售商有 12,000 筆訂單明細,其中 900 筆是重複的發票列。如果在刪除這些重複列之前就填補缺漏的價格,同一張發票會被算兩次,平均值也會偏離價目表。
實用原則:下一列要用到的數字,必須等目前這一列處理完才計算。
把你手上開著的檔案對照這七列。第一個尚未完成的列,就是今天唯一值得動手處理的一列。
剖析並清理原始業務資料
資料剖析只需一小時,主管在任何人開啟模型之前就能完成。請保持原始檔案不動,並把每一項變更寫進清理記錄,讓財務主管能看出總額為何變動。

- 計算列數與欄數,再確認每個欄位的類型。以文字儲存的成本無法加總,而且不會明確報錯。在信任任何總額之前,先轉換格式。
- 計算每個欄位的空值率。空白超過 30% 的欄位,應交給缺漏值規則處理,而不是隨手填補。只有在空白超過 50%,且該欄位對決策並非必要時,我才會直接刪除整個欄位。
- 只移除完全重複的資料,不要動相似的資料。以發票號碼、日期與金額三者同時比對。明細編號不同的第二筆訂單,是一筆真實的銷售。只因客戶與日期相同就刪除它,會讓營收被低估。
- 一次完成格式標準化。統一日期格式,每個欄位只用一種貨幣,代碼中不留多餘空格。格式混用會把同一個產品拆成兩條數列,也會讓之後的資料串接出錯。
- 統一類別標籤。
UK、U.K.與United Kingdom指的是同一個市場。三年期電商匯出檔中,同一條產品線若有四種寫法,造成的損害也一樣。選定一個標籤,其餘全部對應過去。
假設該匯出檔在某一年把訂單日期存成 2024-03-01,另一年則存成 01/03/2024。在兩者統一成同一種格式之前,月度圖表會重複計算三月,或漏掉三月。
清理記錄與隱私處理保護了什麼
清理記錄是一張簡短的表格:欄位、規則、變更列數、負責人、日期。當財務問起為何去年三月的數字縮水,你可以直接指向重複資料規則,而不必憑記憶重建檔案。
在檔案進入任何分析平台之前,先移除客戶姓名、電子郵件與付款資料。預測需求並不需要這些資料,而把它們留在匯出檔中,會造成模型也無法挽回的隱私問題。
如果你想參考商業資料匯出檔的「良好」標準,Pipecorn 的銷售資料品質洞察是一份實用的檢查清單,涵蓋識別碼、完整性與一致性。可用它來決定哪些欄位值得保留,再回頭套用上面的空值率篩選。
在任何學習開始之前先切分資料
切分就像一道圍欄。任何需要估算統計量的步驟,都不該在完整檔案上進行。

在監督式文字分類中,Google 的文字分類指南建議在切分前先打亂資料,因為保留原始順序可能讓兩個資料集都產生偏差。打亂之後,常見的切分方式是 80% 的樣本用於訓練,20% 用於驗證。兩個資料集隨後套用相同的轉換,但這些轉換必須先在訓練資料列上學習完成。
為什麼已排序的銷售檔案會誤導結果
匯出的資料常按日期、地區或客戶排序。如果從上到下切分這樣的檔案,你會用 2023 年的資料訓練,卻用 2024 年底的資料驗證。得出的分數反映的是日曆、促銷檔期,或單一地區的組合,而不是模型是否真正理解了訂單。
當每一列都是獨立個案時,就應該打亂資料,例如已成交的訂單、已流失的帳戶、已分類的工單。若問題是預測,則不要打亂。
預測時請保留時間順序。用較早月份訓練,用較晚月份測試。打亂資料會讓模型看到未來,還被當成是能力。
文字欄位需要依頻率篩選
客服工單和產品描述會膨脹成數千個詞元。在同一套 Google 流程中,你要捨棄出現次數少於 兩次 的詞元,保留前 20,000 個詞元特徵,並用基於 F 檢定的重要性分數為剩下的詞元排序。只出現一次的詞元通常是錯字或一次性的 SKU,不是值得佔用一個欄位的規律。
切分之後,所有對應都只用訓練資料來擬合,再把這份固定的對應套用到驗證資料。若在保留的資料列上重新計算詞彙表或類別清單,同樣會把答案洩漏到資料準備過程中。
填補缺失值,又不扭曲結果
欄位空白的頻率,以及決策是否需要該欄位,決定了處理方式。以下區間只是實務上的經驗法則,並非定律。受監管的風險模型可能不允許刪除資料列,而零售預測則可以刪除。
缺失比例 | 特徵重要性 | 處理方式 |
|---|---|---|
低於 5% | 任何程度 | 若剩餘資料足夠,直接刪除這些資料列 |
5% 至 30% | 低 | 刪除該特徵 |
5% 至 30% | 高 | 僅依訓練資料列進行填補 |
超過 30% | 高 | 進行填補、新增缺失標記欄位,並調查該欄位為何留空 |
超過 30% | 低 | 刪除該特徵 |
一份原本完整的訂單檔案中,只有少數幾筆成本欄位空白,這是第一種情況。刪除這幾行,損失比捏造一個價格小。中段那個很少使用的調查欄位,也不值得硬填一個猜測值,所以直接刪掉整欄。你用來分析流失的客戶年資則要保留,並加以估算。
Google 關於準備資料的分群指引列出三個實用選項:移除含有缺失值的樣本、移除該特徵,或根據其他資料預測缺失值。缺漏很少時,可以考慮刪除資料列;缺漏頻繁時,通常要捨棄該特徵或進行插補。
預測缺漏值,而不是貼上一個常數
對於數值欄位,可以用有值的資料列訓練迴歸模型,再估算空白處。例如,缺少的客戶年齡可以根據收入與年資推估,而不是全部換成全公司的同一個平均值。這樣運用的是你已經信任的變數關係。
訂單金額呈偏態分布。少數大額批發單會拉高平均值,所以用平均值填補,會讓一般購物籃看起來比實際更有價值。中位數貼近典型訂單,出現一張大宗發票時變動也較小。填補前後請比較摘要統計量。若變化很大,代表這個方法是在改寫業務實況,而不是補上一個缺口。
對於類別欄位,可以把空白標記為 Unknown。缺漏本身往往就是訊號:例如結帳時沒有記錄地區,或產品沒有供應商代碼。把它變成一個真正的類別,既保留了該資料列,也讓模型知道該欄位是刻意留空的。
在營運中,頻繁的空白並不罕見。一項 2025 年針對不完整用水資料的研究,描述了一個建築物資料集:2019 年 2 月至 2023 年 12 月共有 33,888 筆每小時記錄,其中 20% 的時段有缺失值。這個比例下,若一律刪除資料列,會丟掉太多歷史資料(該研究)。
插補器只能用訓練資料列來擬合。若你想進一步檢視方法選擇,ELECTE 的缺失資料指南更詳細地說明了各種插補選項。
編碼類別並設計實用特徵
這裡有兩件事要做:把標籤轉成模型可用的數字,並建立能回答業務問題的欄位,這些問題是原始欄位答不了的。

編碼時避免產生虛假排序
獨熱編碼(one-hot encoding)適合取值很少的類別,例如五個銷售區域。每個區域都成為各自的「是或否」欄位,沒有任何區域比其他區域「更大」。
序數編碼(ordinal encoding)適合有真實順序的資料,例如尺寸 S、M、L。這些數字對應的是業務上本來就在使用的排序。
不要把 1、2、3 指派給沒有順序的名稱,例如通路或城市。模型會把較大的代碼視為「更多」的意思。這種錯誤排序之後會表現為一個很有把握卻錯誤的係數。若某個欄位有數百個類別,獨熱編碼會產生非常寬的資料表。編碼前請把罕見類別歸入 Other,而且這個歸類只能依據訓練資料列來學習。
回答業務問題的欄位
建立一份與單一決策相關的精簡清單,而不是把你能想到的每個比率全部傾倒進去。
- 毛利率:
(price − cost) / price可以判斷促銷價是否仍高於成本,這是只看營收做不到的。 - 距上次購買天數:流失檢討需要的是最近一次購買的時間,而不是客戶 ID 的另一份複本。
- 星期幾與月份:需求規劃關心的是週五的高峰和季節性月份,而這些資訊都藏在完整的時間戳記裡。
- 7 日滾動平均:每日銷量起伏很大,週平均才看得出需求是否在上升。
- 庫存銷售比:庫存經理能比只看現有庫存數量更早發現缺貨正在形成。
我會先從與該項決策相關的十到十五個特徵著手。當兩個欄位的相關性高於 0.95 時,刪掉其中一個,因為第二個欄位只是重複第一個。請在資料字典中,把業務含義寫在欄位名稱旁邊。如果編碼對照表或滾動平均是用整份檔案(包含你打算保留作驗證的資料列)學出來的,就會重蹈你在資料切分時已經防堵的洩漏問題。
縮放數值並處理離群值
極端值不一定是錯誤。B2B 客戶的一筆 40 件訂單是真實的銷售。請為它加上標記,避免它主導平均值,但仍保留在歷史資料中。把 1,000 的單價誤輸入成 100,000 則是輸入錯誤。請修正那個數字,而不是把它當成需求來「處理」。
刪除極端值之前先檢查
兩種檢查搭配使用效果很好。1.5 倍四分位距規則會標出遠離欄位中間範圍的資料點。領域檢查則是問這個值是否可能存在:負庫存、十年後的日期、高於售價的折扣。先查證,然後再以第 1 和第 99 百分位數設定上下限、對偏態的營收做對數轉換,或加上標記並保留原始數值供報表使用。
你刪掉的大宗訂單,是你再也預測不到的營收。你保留下來的輸入錯誤,會變成模型以為客戶願意支付的價格。
設定上下限後,請重新執行摘要統計。欄位的中心位置應該幾乎不變。如果中位數大幅跳動,代表上下限動得太多,你應該重新檢視來源資料列。
哪種縮放器符合資料特性
縮放可避免年營收這類大單位的欄位,淹沒每筆訂單件數這類小單位的欄位。Scikit-learn 的預處理文件指出,StandardScaler 以訓練集的平均值為中心,並依變異數縮放各特徵,而在存在大量離群值時,效果可能不佳。RobustScaler 是可直接替換的選項,它使用對離群值更不敏感的中心與範圍估計值。
資料特徵 | 縮放器 | 適用原因 |
|---|---|---|
大致對稱,極端值很少 | StandardScaler | 以平均值為中心,並依變異數進行縮放 |
離群值嚴重,例如偶爾出現的大宗訂單 | RobustScaler | 使用中位數與四分位距,不易受極端值影響 |
數值需要固定範圍,例如 1 到 5 分的評分 | MinMaxScaler | 將數值對應到 0-1,且不改變其分布形狀 |
請僅以訓練資料擬合縮放器,再將該擬合結果套用於驗證資料。若在保留集上重新擬合,驗證資料中的極端值就會左右縮放比例。若想進一步了解如何在選擇處理方式之前找出極端值,請參閱 ELECTE 的離群值指南。
將流程自動化並檢查其輸出
存放在單一筆記本中的清理後檔案,每次執行之間可能出現偏差。新檔案可能得到不同的插補值、類別編碼或縮放比例,使儀表板出現變化,即使背後的業務並沒有改變。
管線會將已擬合的插補器、編碼器和縮放器放在一起,並對新檔案套用相同的轉換。這些步驟只使用訓練分割來擬合。將擬合後的設定套用到驗證與測試資料,不要重新計算。IBM 關於資料洩漏的說明解釋了為何在訓練與測試資料上一併擬合前處理步驟,會使資訊洩漏到評估中。

每次執行後的檢查
作業成功只代表流程已執行完畢。請檢查輸出結果是否仍與來源資料及您設定的規則相符:
- 列數:將載入的檔案與匯出檔案核對,並將已記錄的重複資料計算在內。
- 各欄位空值率:若突然上升,請立即調查,這可能代表某個來源欄位已停止傳入。
- 數值範圍:確認價格、數量與日期仍在可接受的範圍內。
- 新類別:將未曾出現的地區或 SKU 歸入已定義的類別,而不是在無通知的情況下直接捨棄。
想了解資料驗證的實際範例,請參閱這些檢查如何應用於企業檔案。請將自動化輸出視為估計值,並在以其觸發警示之前,先人工檢視最初幾個週期。
ELECTE 是專為成長型企業打造的 AI 驅動數據分析平台,可連接會計軟體或上傳的檔案,無需分析師即可進行數據分析與預測。客戶透過自動化財務分析,每週節省 10 小時以上。這項協助的前提,是採用能經得起審查的擬合步驟,而不是每次上傳都重新計算。
本週請選一個資料集,對照這份七列的表格走一遍,並標出哪些步驟仍是人工操作。可將重複性的步驟自動化,但需要判斷的情況,例如重複資料與真實補貨訂單、打字錯誤與大宗訂單,在規則穩定之前,應保留人工審核。
ELECTE 可連接您的會計資料或上傳的檔案,完成資料準備,並將其轉化為可與團隊一同審閱的預測與報告。若您希望每次載入資料時,都以相同方式套用這些資料預處理步驟,請造訪 ELECTE,了解平台如何以您自己的數據執行整個流程。

留言
尚無留言——開始討論吧。