基本概念
數(shù)據(jù)清洗(Data cleaning)– 對數(shù)據(jù)進(jìn)行重新審查和校驗(yàn)的過程,目的在于刪除重復(fù)信息、糾正存在的錯(cuò)誤,并提供數(shù)據(jù)一致性。
數(shù)據(jù)清洗從名字上也看的出就是把“臟”的“洗掉”,指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無效值和缺失值等。因?yàn)閿?shù)據(jù)倉庫中的數(shù)據(jù)是面向某一主題的數(shù)據(jù)的集合,這些數(shù)據(jù)從多個(gè)業(yè)務(wù)系統(tǒng)中抽取而來而且包含歷史數(shù)據(jù),這樣就避免不了有的數(shù)據(jù)是錯(cuò)誤數(shù)據(jù)、有的數(shù)據(jù)相互之間有沖突,這些錯(cuò)誤的或有沖突的數(shù)據(jù)顯然是我們不想要的,稱為“臟數(shù)據(jù)”。我們要按照一定的規(guī)則把“臟數(shù)據(jù)”“洗掉”,這就是數(shù)據(jù)清洗。而數(shù)據(jù)清洗的任務(wù)是過濾那些不符合要求的數(shù)據(jù),將過濾的結(jié)果交給業(yè)務(wù)主管部門,確認(rèn)是否過濾掉還是由業(yè)務(wù)單位修正之后再進(jìn)行抽取。不符合要求的數(shù)據(jù)主要是有不完整的數(shù)據(jù)、錯(cuò)誤的數(shù)據(jù)、重復(fù)的數(shù)據(jù)三大類。數(shù)據(jù)清洗是與問卷審核不同,錄入后的數(shù)據(jù)清理一般是由計(jì)算機(jī)而不是人工完成1。
一致性檢查一致性檢查(consistency check)是根據(jù)每個(gè)變量的合理取值范圍和相互關(guān)系,檢查數(shù)據(jù)是否合乎要求,發(fā)現(xiàn)超出正常范圍、邏輯上不合理或者相互矛盾的數(shù)據(jù)。例如,用1-7級量表測量的變量出現(xiàn)了0值,體重出現(xiàn)了負(fù)數(shù),都應(yīng)視為超出正常值域范圍。SPSS、SAS、和Excel等計(jì)算機(jī)軟件都能夠根據(jù)定義的取值范圍,自動(dòng)識別每個(gè)超出范圍的變量值。具有邏輯上不一致性的答案可能以多種形式出現(xiàn):例如,許多調(diào)查對象說自己開車上班,又報(bào)告沒有汽車;或者調(diào)查對象報(bào)告自己是某品牌的重度購買者和使用者,但同時(shí)又在熟悉程度量表上給了很低的分值。發(fā)現(xiàn)不一致時(shí),要列出問卷序號、記錄序號、變量名稱、錯(cuò)誤類別等,便于進(jìn)一步核對和糾正。
無效值和缺失值的處理由于調(diào)查、編碼和錄入誤差,數(shù)據(jù)中可能存在一些無效值和缺失值,需要給予適當(dāng)?shù)奶幚?。常用的處理方法有:估算,整例刪除,變量刪除和成對刪除。
估算(estimation)。最簡單的辦法就是用某個(gè)變量的樣本均值、中位數(shù)或眾數(shù)代替無效值和缺失值。這種辦法簡單,但沒有充分考慮數(shù)據(jù)中已有的信息,誤差可能較大。另一種辦法就是根據(jù)調(diào)查對象對其他問題的答案,通過變量之間的相關(guān)分析或邏輯推論進(jìn)行估計(jì)。例如,某一產(chǎn)品的擁有情況可能與家庭收入有關(guān),可以根據(jù)調(diào)查對象的家庭收入推算擁有這一產(chǎn)品的可能性。
整例刪除(casewise deletion)是剔除含有缺失值的樣本。由于很多問卷都可能存在缺失值,這種做法的結(jié)果可能導(dǎo)致有效樣本量大大減少,無法充分利用已經(jīng)收集到的數(shù)據(jù)。因此,只適合關(guān)鍵變量缺失,或者含有無效值或缺失值的樣本比重很小的情況。
變量刪除(variable deletion)。如果某一變量的無效值和缺失值很多,而且該變量對于所研究的問題不是特別重要,則可以考慮將該變量刪除。這種做法減少了供分析用的變量數(shù)目,但沒有改變樣本量。
成對刪除(pairwise deletion)是用一個(gè)特殊碼(通常是9、99、999等)代表無效值和缺失值,同時(shí)保留數(shù)據(jù)集中的全部變量和樣本。但是,在具體計(jì)算時(shí)只采用有完整答案的樣本,因而不同的分析因涉及的變量不同,其有效樣本量也會(huì)有所不同。這是一種保守的處理方法,最大限度地保留了數(shù)據(jù)集中的可用信息。
采用不同的處理方法可能對分析結(jié)果產(chǎn)生影響,尤其是當(dāng)缺失值的出現(xiàn)并非隨機(jī)且變量之間明顯相關(guān)時(shí)。因此,在調(diào)查中應(yīng)當(dāng)盡量避免出現(xiàn)無效值和缺失值,保證數(shù)據(jù)的完整性2。
數(shù)據(jù)清洗原理數(shù)據(jù)清洗原理:利用有關(guān)技術(shù)如數(shù)理統(tǒng)計(jì)、數(shù)據(jù)挖掘或預(yù)定義的清理規(guī)則將臟數(shù)據(jù)轉(zhuǎn)化為滿足數(shù)據(jù)質(zhì)量要求的數(shù)據(jù)。
主要類型殘缺數(shù)據(jù)這一類數(shù)據(jù)主要是一些應(yīng)該有的信息缺失,如供應(yīng)商的名稱、分公司的名稱、客戶的區(qū)域信息缺失、業(yè)務(wù)系統(tǒng)中主表與明細(xì)表不能匹配等。對于這一類數(shù)據(jù)過濾出來,按缺失的內(nèi)容分別寫入不同Excel文件向客戶提交,要求在規(guī)定的時(shí)間內(nèi)補(bǔ)全。補(bǔ)全后才寫入數(shù)據(jù)倉庫。
錯(cuò)誤數(shù)據(jù)這一類錯(cuò)誤產(chǎn)生的原因是業(yè)務(wù)系統(tǒng)不夠健全,在接收輸入后沒有進(jìn)行判斷直接寫入后臺數(shù)據(jù)庫造成的,比如數(shù)值數(shù)據(jù)輸成全角數(shù)字字符、字符串?dāng)?shù)據(jù)后面有一個(gè)回車操作、日期格式不正確、日期越界等。這一類數(shù)據(jù)也要分類,對于類似于全角字符、數(shù)據(jù)前后有不可見字符的問題,只能通過寫SQL語句的方式找出來,然后要求客戶在業(yè)務(wù)系統(tǒng)修正之后抽取。日期格式不正確的或者是日期越界的這一類錯(cuò)誤會(huì)導(dǎo)致ETL運(yùn)行失敗,這一類錯(cuò)誤需要去業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫用SQL的方式挑出來,交給業(yè)務(wù)主管部門要求限期修正,修正之后再抽取。
重復(fù)數(shù)據(jù)對于這一類數(shù)據(jù)——特別是維表中會(huì)出現(xiàn)這種情況——將重復(fù)數(shù)據(jù)記錄的所有字段導(dǎo)出來,讓客戶確認(rèn)并整理。
數(shù)據(jù)清洗是一個(gè)反復(fù)的過程,不可能在幾天內(nèi)完成,只有不斷的發(fā)現(xiàn)問題,解決問題。對于是否過濾,是否修正一般要求客戶確認(rèn),對于過濾掉的數(shù)據(jù),寫入Excel文件或者將過濾數(shù)據(jù)寫入數(shù)據(jù)表,在ETL開發(fā)的初期可以每天向業(yè)務(wù)單位發(fā)送過濾數(shù)據(jù)的郵件,促使他們盡快地修正錯(cuò)誤,同時(shí)也可以做為將來驗(yàn)證數(shù)據(jù)的依據(jù)。數(shù)據(jù)清洗需要注意的是不要將有用的數(shù)據(jù)過濾掉,對于每個(gè)過濾規(guī)則認(rèn)真進(jìn)行驗(yàn)證,并要用戶確認(rèn)。
數(shù)據(jù)清洗的方法一般來說,數(shù)據(jù)清理是將數(shù)據(jù)庫精簡以除去重復(fù)記錄,并使剩余部分轉(zhuǎn)換成標(biāo)準(zhǔn)可接收格式的過程。數(shù)據(jù)清理標(biāo)準(zhǔn)模型是將數(shù)據(jù)輸入到數(shù)據(jù)清理處理器,通過一系列步驟“ 清理”數(shù)據(jù),然后以期望的格式輸出清理過的數(shù)據(jù)(如上圖所示)。數(shù)據(jù)清理從數(shù)據(jù)的準(zhǔn)確性、完整性、一致性、惟一性、適時(shí)性、有效性幾個(gè)方面來處理數(shù)據(jù)的丟失值、越界值、不一致代碼、重復(fù)數(shù)據(jù)等問題。
數(shù)據(jù)清理一般針對具體應(yīng)用,因而難以歸納統(tǒng)一的方法和步驟,但是根據(jù)數(shù)據(jù)不同可以給出相應(yīng)的數(shù)據(jù)清理方法。
1.解決不完整數(shù)據(jù)( 即值缺失)的方法
大多數(shù)情況下,缺失的值必須手工填入( 即手工清理)。當(dāng)然,某些缺失值可以從本數(shù)據(jù)源或其它數(shù)據(jù)源推導(dǎo)出來,這就可以用平均值、最大值、最小值或更為復(fù)雜的概率估計(jì)代替缺失的值,從而達(dá)到清理的目的。
2.錯(cuò)誤值的檢測及解決方法
用統(tǒng)計(jì)分析的方法識別可能的錯(cuò)誤值或異常值,如偏差分析、識別不遵守分布或回歸方程的值,也可以用簡單規(guī)則庫( 常識性規(guī)則、業(yè)務(wù)特定規(guī)則等)檢查數(shù)據(jù)值,或使用不同屬性間的約束、外部的數(shù)據(jù)來檢測和清理數(shù)據(jù)。
3.重復(fù)記錄的檢測及消除方法
數(shù)據(jù)庫中屬性值相同的記錄被認(rèn)為是重復(fù)記錄,通過判斷記錄間的屬性值是否相等來檢測記錄是否相等,相等的記錄合并為一條記錄(即合并/清除)。合并/清除是消重的基本方法。
4.不一致性( 數(shù)據(jù)源內(nèi)部及數(shù)據(jù)源之間)的檢測及解決方法
從多數(shù)據(jù)源集成的數(shù)據(jù)可能有語義沖突,可定義完整性約束用于檢測不一致性,也可通過分析數(shù)據(jù)發(fā)現(xiàn)聯(lián)系,從而使得數(shù)據(jù)保持一致。目前開發(fā)的數(shù)據(jù)清理工具大致可分為三類。
數(shù)據(jù)遷移工具允許指定簡單的轉(zhuǎn)換規(guī)則,如:將字符串gender替換成sex。sex公司的PrismWarehouse是一個(gè)流行的工具,就屬于這類。
數(shù)據(jù)清洗工具使用領(lǐng)域特有的知識( 如,郵政地址)對數(shù)據(jù)作清洗。它們通常采用語法分析和模糊匹配技術(shù)完成對多數(shù)據(jù)源數(shù)據(jù)的清理。某些工具可以指明源的“ 相對清潔程度”。工具Integrity和Trillum屬于這一類。
數(shù)據(jù)審計(jì)工具可以通過掃描數(shù)據(jù)發(fā)現(xiàn)規(guī)律和聯(lián)系。因此,這類工具可以看作是數(shù)據(jù)挖掘工具的變形3。