數據清洗
出自 MBA智库百科(https://wiki.mbalib.com/)
數據清洗(Data Cleaning)
目錄 |
什麼是數據清洗[1]
數據清洗是指發現並糾正數據文件中可識別的錯誤的最後一道程式,包括檢查數據一致性,處理無效值和缺失值等。與問卷審核不同,錄入後的數據清理一般是由電腦而不是人工完成。
- 1.一致性檢查
一致性檢查(consistency check)是根據每個變數的合理取值範圍和相互關係,檢查數據是否合乎要求,發現超出正常範圍、邏輯上不合理或者相互矛盾的數據。例如,用1-7級量表測量的變數出現了0值,體重出現了負數,都應視為超出正常值域範圍。SPSS、SAS、和Excel等電腦軟體都能夠根據定義的取值範圍,自動識別每個超出範圍的變數值。具有邏輯上不一致性的答案可能以多種形式出現:例如,許多調查對象說自己開車上班,又報告沒有汽車;或者調查對象報告自己是某品牌的重度購買者和使用者,但同時又在熟悉程度量表上給了很低的分值。發現不一致時,要列出問卷序號、記錄序號、變數名稱、錯誤類別等,便於進一步核對和糾正。
- 2.無效值和缺失值的處理
由於調查、編碼和錄入誤差,數據中可能存在一些無效值和缺失值,需要給予適當的處理。常用的處理方法有:估算,整例刪除,變數刪除和成對刪除。
估算(estimation)。最簡單的辦法就是用某個變數的樣本均值、中位數或眾數代替無效值和缺失值。這種辦法簡單,但沒有充分考慮數據中已有的信息,誤差可能較大。另一種辦法就是根據調查對象對其他問題的答案,通過變數之間的相關分析或邏輯推論進行估計。例如,某一產品的擁有情況可能與家庭收入有關,可以根據調查對象的家庭收入推算擁有這一產品的可能性。
整例刪除(casewise deletion)是剔除含有缺失值的樣本。由於很多問卷都可能存在缺失值,這種做法的結果可能導致有效樣本量大大減少,無法充分利用已經收集到的數據。因此,只適合關鍵變數缺失,或者含有無效值或缺失值的樣本比重很小的情況。
變數刪除(variable deletion)。如果某一變數的無效值和缺失值很多,而且該變數對於所研究的問題不是特別重要,則可以考慮將該變數刪除。這種做法減少了供分析用的變數數目,但沒有改變樣本量。
成對刪除(pairwise deletion)是用一個特殊碼(通常是9、99、999等)代表無效值和缺失值,同時保留數據集中的全部變數和樣本。但是,在具體計算時只採用有完整答案的樣本,因而不同的分析因涉及的變數不同,其有效樣本量也會有所不同。這是一種保守的處理方法,最大限度地保留了數據集中的可用信息。
採用不同的處理方法可能對分析結果產生影響,尤其是當缺失值的出現並非隨機且變數之間明顯相關時。因此,在調查中應當儘量避免出現無效值和缺失值,保證數據的完整性。
數據清洗原理[2]
數據清洗原理:利用有關技術如數理統計、數據挖掘或預定義的清理規則將臟數據轉化為滿足數據質量要求的數據,如圖所示。
數據清洗的實現方式與範圍[2]
按數據清洗的實現方式與範圍,可分為4種:
(1) 手工實現,通過人工檢查,只要投入足夠的人力物力財力,也能發現所有錯誤,但效率低下。在大數據量的情況下,幾乎是不可能的。
(2) 通過專門編寫的應用程式,這種方法能解決某個特定的問題,但不夠靈活,特別是在清理過程需要反覆進行(一般來說,數據清理一遍就達到要求的很少)時,導致程式複雜,清理過程變化時,工作量大。而且這種方法也沒有充分利用目前資料庫提供的強大數據處理能力 。
(3) 解決某類特定應用域的問題,如根據概率統計學原理查找數值異常的記錄,對姓名、地址、郵政編碼等進行清理,這是目前研究得較多的領域,也是應用最成功的一類。如商用系統: Trillinm Software , System Match Maketr 等。
(4) 與特定應用領域無關的數據清理,這一部分的研究主要集中在清理重覆的記錄上,如Data Cleanser Data Blade Module ,Integrity 系統等。
這4種實現方法,由於後兩種具有某種通用性,較大的實用性,引起了越來越多的註意。但是不管哪種方法,大致都由三個階段組成: ①數據分析、定義錯誤類型; ②搜索、識別錯誤記錄; ③修正錯誤。
第一階段,儘管已有一些數據分析工具,但仍以人工分析為主。在錯誤類型分為兩大類:單數據源與多數據源,並將它們又各分為結構級與記錄級錯誤。這種分類非常適合於解決數據倉庫中的數據清理問題。
第二階段,有兩種基本的思路用於識別錯誤:一種是發掘數據中存在的模式,然後利用這些模式清理數據;另一種是基於數據的,根據預定義的清理規則,查找不匹配的記錄。後者用得更多。
第三階段,某些特定領域能夠根據發現的錯誤模式,編製程式或藉助於外部標準源文件、數據字典一定程度上修正錯誤;對數值欄位,有時能根據數理統計知識自動修正,但經常須編製複雜的程式或藉助於人工干預完成。
絕大部分數據清理方案提供介面用於編製清理程式。它們一般來說包括很多耗時的排序、比較、匹配過程,且這些過程多次重覆,用戶必須等待較長時間。在一個互動式的數據清理方案。系統將錯誤檢測與清理緊密結合起來,用戶能通過直觀的圖形化界面一步步地指定清理操作,且能立即看到此時的清理結果, (僅僅在所見的數據上進行清理,所以速度很快) 不滿意清理效果時還能撤銷上一步的操作,最後將所有清理操作編譯執行。並且這種方案對清理迴圈錯誤非常有效。
許多數據清理工具提供了描述性語言解決用戶友好性,降低用戶編程複雜度。如ARKTOS 方案提供了XADL 語言(一種基於預定義的DTD 的XML 語言) 、SADL 語言,在ATDX 提供了一套巨集操作(來自於SQL 語句及外部函數) ,一種SQL2Like 命令語言,這些描述性語言都在一定程度上減輕了用戶的編程難度,但各系統一般不具有互操作性,不能通用。
數據清理屬於一個較新的研究領域,直接針對這方面的研究並不多,中文數據清理更少。現在的研究主要為解決兩個問題:發現異常、清理重覆記錄。
數據清洗的方法[3]
一般來說,數據清理是將資料庫精簡以除去重覆記錄,並使剩餘部分轉換成標準可接收格式的過程。數據清理標準模型是將數據輸入到數據清理處理器,通過一系列步驟“ 清理”數據,然後以期望的格式輸出清理過的數據(如上圖所示)。數據清理從數據的準確性、完整性、一致性、惟一性、適時性、有效性幾個方面來處理數據的丟失值、越界值、不一致代碼、重覆數據等問題。
數據清理一般針對具體應用,因而難以歸納統一的方法和步驟,但是根據數據不同可以給出相應的數據清理方法。
- 1.解決不完整數據( 即值缺失)的方法
大多數情況下,缺失的值必須手工填入( 即手工清理)。當然,某些缺失值可以從本數據源或其它數據源推導出來,這就可以用平均值、最大值、最小值或更為複雜的概率估計代替缺失的值,從而達到清理的目的。
- 2.錯誤值的檢測及解決方法
用統計分析的方法識別可能的錯誤值或異常值,如偏差分析、識別不遵守分佈或回歸方程的值,也可以用簡單規則庫( 常識性規則、業務特定規則等)檢查數據值,或使用不同屬性間的約束、外部的數據來檢測和清理數據。
- 3.重覆記錄的檢測及消除方法
資料庫中屬性值相同的記錄被認為是重覆記錄,通過判斷記錄間的屬性值是否相等來檢測記錄是否相等,相等的記錄合併為一條記錄(即合併/清除)。合併/清除是消重的基本方法。
- 4.不一致性( 數據源內部及數據源之間)的檢測及解決方法
從多數據源集成的數據可能有語義衝突,可定義完整性約束用於檢測不一致性,也可通過分析數據發現聯繫,從而使得數據保持一致。目前開發的數據清理工具大致可分為三類。
數據遷移工具允許指定簡單的轉換規則,如:將字元串gender替換成sex。sex公司的PrismWarehouse是一個流行的工具,就屬於這類。
數據清洗工具使用領域特有的知識( 如,郵政地址)對數據作清洗。它們通常採用語法分析和模糊匹配技術完成對多數據源數據的清理。某些工具可以指明源的“ 相對清潔程度”。工具Integrity和Trillum屬於這一類。
數據審計工具可以通過掃描數據發現規律和聯繫。因此,這類工具可以看作是數據挖掘工具的變形。
數軟的DataStandard數據線上自助清洗平臺可以免費進行線上數據清洗服務