中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

數(shù)據(jù)清理的終極指南

2019-03-19    來源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

 

我花了幾個(gè)月的時(shí)間分析來自傳感器、調(diào)查及日志等相關(guān)數(shù)據(jù)。無論我用多少圖表,設(shè)計(jì)多么復(fù)雜的算法,結(jié)果總是會(huì)與預(yù)期不同。更糟糕的是,當(dāng)你向首席執(zhí)行官展示你的新發(fā)現(xiàn)時(shí),他/她總會(huì)發(fā)現(xiàn)缺陷,你的發(fā)現(xiàn)與他們的理解完全不符-?畢竟,他們是比你更了解領(lǐng)域的專家,而你只是數(shù)據(jù)工程師或開發(fā)人員。

你為你的模型引入了大量臟數(shù)據(jù),沒有清理數(shù)據(jù),你告訴你的公司用這些結(jié)果做事情,結(jié)果肯定是錯(cuò)的。數(shù)據(jù)不正確或不一致會(huì)導(dǎo)致錯(cuò)誤的結(jié)論,因此,清理和理解數(shù)據(jù)對(duì)結(jié)果的質(zhì)量都會(huì)有很大影響。

垃圾進(jìn)垃圾出

實(shí)際上,簡(jiǎn)單算法的作用可能超過復(fù)雜的算法,因?yàn)樗毁x予了足夠高質(zhì)量的數(shù)據(jù)。

質(zhì)量數(shù)據(jù)優(yōu)于花哨的算法

出于這些原因,重要的是要有一個(gè)分步指南,一個(gè)備忘單。首先,我們想要實(shí)現(xiàn)的目標(biāo)是什么?質(zhì)量數(shù)據(jù)是什么意思?質(zhì)量數(shù)據(jù)的衡量標(biāo)準(zhǔn)是什么?了解你想要完成的任務(wù),在采取任何行動(dòng)之前,你的最終目標(biāo)至關(guān)重要。

目錄:

· 數(shù)據(jù)質(zhì)量(合法性,準(zhǔn)確性,完整性,一致性)

· 工作流程(檢查,清潔,驗(yàn)證,報(bào)告)

· 檢查(數(shù)據(jù)分析,可視化,軟件包)

· 清理(??無關(guān)數(shù)據(jù),重復(fù)數(shù)據(jù),類型轉(zhuǎn)換,語法錯(cuò)誤)

· 驗(yàn)證

· 總結(jié)

數(shù)據(jù)質(zhì)量

除了維基百科上的質(zhì)量標(biāo)準(zhǔn)之外,我找不到更好的解釋質(zhì)量標(biāo)準(zhǔn)。所以,我將在這里總結(jié)一下。

合法性

數(shù)據(jù)符合定義的業(yè)務(wù)規(guī)則或約束的程度。

· 數(shù)據(jù)類型約束:特定列中的值必須是特定的數(shù)據(jù)類型,例如,布爾值,數(shù)字,日期等。

· 范圍約束:通常,數(shù)字或日期應(yīng)在特定范圍內(nèi)。

· 強(qiáng)制約束:某些列不能為空。

· 唯一約束:字段或字段組合在數(shù)據(jù)集中必須是唯一的。

· Set-Membership約束:列的值來自一組離散值,例如枚舉值。例如,一個(gè)人的性別可能是男性或女性。

· 外鍵約束:在關(guān)系數(shù)據(jù)庫中,外鍵列不能具有引用的主鍵中不存在的值。

· 正則表達(dá)式模式:必須采用特定模式的文本字段。例如,電話號(hào)碼可能需要具有模式(999)999-9999。

· 跨領(lǐng)域驗(yàn)證:跨越多個(gè)領(lǐng)域的某些條件必須成立。例如,患者出院的日期不能早于入院日期。

準(zhǔn)確性

數(shù)據(jù)接近真實(shí)值的程度。

雖然定義所有的值允許出現(xiàn)無效值,但這并不意味著它們都是準(zhǔn)確的。

一個(gè)有效的街道地址可能實(shí)際上并不存在,一個(gè)人的眼睛顏色,比如藍(lán)色,可能是有效的,但不是真的。另一件需要注意的是精度和精度之間的差異。

完整性

所有必需數(shù)據(jù)的已知程度。由于各種原因,數(shù)據(jù)可能會(huì)丟失。如果可能的話,可以通過質(zhì)疑原始來源來緩解這個(gè)問題,比如重新獲得這個(gè)主題的數(shù)據(jù)。

一致性

數(shù)據(jù)在同一數(shù)據(jù)集內(nèi)或跨多個(gè)數(shù)據(jù)集的一致程度。當(dāng)數(shù)據(jù)集中的兩個(gè)值相互矛盾時(shí),就會(huì)出現(xiàn)不一致。

離婚后,有效年齡,例如10歲,可能與婚姻狀況不符?蛻舯挥涗浽诰哂袃蓚(gè)不同地址的兩個(gè)不同表中。哪一個(gè)是真的?

工作流程

工作流程一共四個(gè)步驟,旨在生成高質(zhì)量的數(shù)據(jù),并考慮到我們所討論的所有標(biāo)準(zhǔn)。

1.檢查:檢測(cè)不正確和不一致的數(shù)據(jù)。

2.清潔:修復(fù)或刪除發(fā)現(xiàn)的異常。

3.驗(yàn)證:清潔后,檢查結(jié)果以驗(yàn)證是否正確。

4.報(bào)告:記錄所做更改和當(dāng)前存儲(chǔ)數(shù)據(jù)質(zhì)量的報(bào)告。

實(shí)際上,你所看到的順序過程是一個(gè)迭代的,無窮無盡的過程。當(dāng)檢測(cè)到新的缺陷時(shí),可以從驗(yàn)證到檢查。

檢查

檢查數(shù)據(jù)非常耗時(shí),并且需要使用許多方法來探索用于錯(cuò)誤檢測(cè)的基礎(chǔ)數(shù)據(jù)。下面是其中的一些:

數(shù)據(jù)分析

一個(gè)匯總統(tǒng)計(jì)有關(guān)數(shù)據(jù)的數(shù)據(jù)分析是真正有用的,它可以提供有關(guān)數(shù)據(jù)質(zhì)量的總體思路。例如,檢查特定列是否符合特定標(biāo)準(zhǔn)或模式。數(shù)據(jù)列是記錄為字符串還是數(shù)字?丟失了多少個(gè)值?列中有多少個(gè)唯一值及其分布?此數(shù)據(jù)集是否與另一個(gè)數(shù)據(jù)集鏈接或有關(guān)系?

可視化

通過使用諸如平均值、標(biāo)準(zhǔn)偏差、范圍或分位數(shù)等統(tǒng)計(jì)方法分析和可視化數(shù)據(jù),可以找到意外且因此錯(cuò)誤的值。

例如,通過可視化各國的平均收入,可能會(huì)看到有一些異常值。這些異常值值得研究,不一定是不正確的數(shù)據(jù)。

軟件包

使用你的語言提供的幾個(gè)軟件包或庫將允許你指定約束并檢查數(shù)據(jù)是否違反這些約束。此外,他們不僅可以生成違反哪些規(guī)則的報(bào)告,還可以創(chuàng)建哪些列與哪些規(guī)則相關(guān)聯(lián)的圖表。

 

 

清潔

數(shù)據(jù)清理涉及基于問題和數(shù)據(jù)類型的不同技術(shù)?梢詰(yīng)用不同的方法,每種方法都有自己的權(quán)衡?偟膩碚f,不正確的數(shù)據(jù)被刪除,糾正或估算。

不相關(guān)的數(shù)據(jù)

不相關(guān)的數(shù)據(jù)是那些實(shí)際上不需要的數(shù)據(jù),并且不適合我們?cè)噲D解決的問題。例如,如果我們分析有關(guān)人口總體健康狀況的數(shù)據(jù),則不需要電話號(hào)碼。同樣,如果你只對(duì)某個(gè)特定國家/地區(qū)感興趣,則不希望包含所有其他國家/地區(qū)。只有當(dāng)你確定某個(gè)數(shù)據(jù)不重要時(shí),你才可以放棄它。否則,你就需要探索特征變量之間的相關(guān)矩陣。

即使你注意到?jīng)]有相關(guān)性,你應(yīng)該問一個(gè)域?qū)<。你永遠(yuǎn)不會(huì)知道,一個(gè)似乎無關(guān)緊要的特征,從實(shí)際經(jīng)驗(yàn)來看,可能非常重要。

重復(fù)項(xiàng)

重復(fù)項(xiàng)是數(shù)據(jù)集中重復(fù)的數(shù)據(jù)點(diǎn)。

例如:

· 數(shù)據(jù)來自不同來源;
· 用戶可能會(huì)兩次點(diǎn)擊提交按鈕,認(rèn)為表單實(shí)際上沒有提交;
· 提交了兩次在線預(yù)訂請(qǐng)求,糾正了第一次意外輸入的錯(cuò)誤信息。

類型轉(zhuǎn)換

確保將數(shù)字存儲(chǔ)為數(shù)字?jǐn)?shù)據(jù)類型,日期應(yīng)存儲(chǔ)為日期對(duì)象,或Unix時(shí)間戳(秒數(shù)),依此類推。如果需要,可以將分類值轉(zhuǎn)換為數(shù)字和從數(shù)字轉(zhuǎn)換。

需要注意的是,無法轉(zhuǎn)換為指定類型的值應(yīng)轉(zhuǎn)換為NA值(或任何值),并顯示警告。這表示值不正確,必須修復(fù)。

語法錯(cuò)誤

刪除空格:應(yīng)刪除字符串開頭或結(jié)尾的額外空格。

" hello world " => "hello world

填充字符串:字符串可以用空格或其他字符填充到一定寬度。例如,某些數(shù)字代碼通常用前綴零表示,以確保它們始終具有相同的位數(shù)。

313 => 000313 (6 digits)

拼寫錯(cuò)誤:字符串可以通過多種不同方式輸入,毫無疑問,可能會(huì)出錯(cuò)。

Gender
m
Male
fem.
FemalE
Femle

這個(gè)分類變量被認(rèn)為有5個(gè)不同的類,而不是預(yù)期的2個(gè):男性和女性。因此,我們的職責(zé)是從上述數(shù)據(jù)中識(shí)別出每個(gè)值是男性還是女性。我們可以怎么做呢?

第一種解決方案是手動(dòng)將每個(gè)值映射到“男性”或“女性”。

dataframe['gender'].map({'m': 'male', fem.': 'female', ...})

第二種解決方案是使用模式匹配。例如,我們可以在字符串的開頭查找性別中m或M的出現(xiàn)。

re.sub(r"\^m\$", 'Male', 'male', flags=re.IGNORECASE)

第三種解決方案是使用模糊匹配:一種算法,用于識(shí)別預(yù)期字符串與給定字符串之間的距離。它的基本實(shí)現(xiàn)計(jì)算將一個(gè)字符串轉(zhuǎn)換為另一個(gè)字符串所需的操作數(shù)。

Gender male female

m 3 5
Male 1 3
fem. 5 3
FemalE 3 2
Femle 3 1

此外,如果你有一個(gè)像城市名稱這樣的變量,你懷疑拼寫錯(cuò)誤或類似字符串應(yīng)該被視為相同。例如,“lisbon”可以輸入為“lisboa”,“lisbona”,“Lisbon”等。

City Distance from "lisbon"

lisbon 0
lisboa 1
Lisbon 1
lisbona 2

注意“0”,“NA”,“無”,“空”或“INF”等值,它們可能意味著同樣的事情:缺少價(jià)值。

規(guī)范

我們的職責(zé)是不僅要識(shí)別拼寫錯(cuò)誤,還要將每個(gè)值放在同一標(biāo)準(zhǔn)格式中。對(duì)于字符串,請(qǐng)確保所有值都是小寫或大寫。

對(duì)于數(shù)值,請(qǐng)確保所有值都具有特定的測(cè)量單位。例如,高度可以是米和厘米。1米的差異被認(rèn)為與1厘米的差異相同。因此,這里的任務(wù)是將高度轉(zhuǎn)換為單個(gè)單位。

對(duì)于日期,美國版本與歐洲版本不同。將日期記錄為時(shí)間戳(毫秒數(shù))與將日期記錄為日期對(duì)象不同。

縮放/轉(zhuǎn)換

縮放意味著轉(zhuǎn)換數(shù)據(jù)以使其適合特定的比例,例如0-100或0-1。

例如,可以將學(xué)生的考試分?jǐn)?shù)重新縮放為百分比(0-100)而不是GPA(0-5)。

它還可以幫助使某些類型的數(shù)據(jù)繪圖更容易。例如,我們可能希望減少偏斜以幫助繪圖(當(dāng)有這么多異常值時(shí))。最常用的函數(shù)是log,square root和inverse?s放也可以在具有不同測(cè)量單位的數(shù)據(jù)上進(jìn)行。

規(guī)范化

雖然規(guī)范化也將值重新調(diào)整為0-1的范圍,但目的是轉(zhuǎn)換數(shù)據(jù)以使其正常分布。為什么?

因?yàn)樵诖蠖鄶?shù)情況下,如果我們要使用依賴于正態(tài)分布數(shù)據(jù)的統(tǒng)計(jì)方法,我們會(huì)對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。怎樣完成?

可以使用日志功能,也可以使用其中一種方法。

根據(jù)使用的縮放方法,數(shù)據(jù)分布的形狀可能會(huì)發(fā)生變化。例如“標(biāo)準(zhǔn)Z分?jǐn)?shù)”和“學(xué)生t統(tǒng)計(jì)量”保留了形狀,而日志功能則沒有。

 

 

規(guī)范化與縮放(使用特征縮放)

缺失值

鑒于缺失值是不可避免的,讓我們?cè)谟龅剿鼈儠r(shí)該怎么做。有三種或許更多的方法來處理它們。

一、Drop

如果列中的缺失值很少發(fā)生并且隨機(jī)發(fā)生,那么最簡(jiǎn)單和最正確的解決方案是刪除具有缺失值的觀察值(行)。如果缺少大多數(shù)列的值,并且隨機(jī)發(fā)生,則典型的決定是刪除整列。

這在進(jìn)行統(tǒng)計(jì)分析時(shí)特別有用。

二、Impute

這意味著根據(jù)其他觀察結(jié)果計(jì)算缺失值。有很多方法可以做到這一點(diǎn):

1、使用統(tǒng)計(jì)值,如均值,中位數(shù)。但是,這些都不能保證獲得無偏的數(shù)據(jù),特別是在有許多缺失值的情況下。

當(dāng)原始數(shù)據(jù)不偏斜時(shí),平均值最有用,而中值更穩(wěn)健,對(duì)異常值不敏感。在正態(tài)分布的數(shù)據(jù)中,可以獲得與均值相差2個(gè)標(biāo)準(zhǔn)偏差的所有值。接下來,通過生成之間的隨機(jī)數(shù)填寫缺失值(mean?—?2 * std) & (mean + 2 * std):

rand = np.random.randint(average_age - 2*std_age, average_age + 2*std_age, size =count_nan_age) dataframe["age"][np.isnan(dataframe["age"])] = rand

2、使用線性回歸。根據(jù)現(xiàn)有數(shù)據(jù),可以計(jì)算出兩個(gè)變量之間的最佳擬合線,比如房?jī)r(jià)與面積m2。值得一提的是,線性回歸模型對(duì)異常值很敏感。

3、Hot-deck:從其他類似記錄中復(fù)制值。這僅在你有足夠的可用數(shù)據(jù)時(shí)才有用。并且,它可以應(yīng)用于數(shù)值的且已經(jīng)分類的數(shù)據(jù)。

另外我們還可以采用隨機(jī)方法,用隨機(jī)值填充缺失值。進(jìn)一步采用這種方法,可以先將數(shù)據(jù)集分成兩組,基于某些特征,比如性別,然后隨機(jī)分別填寫不同性別的缺失值。

三、Flag

一些人認(rèn)為,無論我們使用何種插補(bǔ)方法,填寫缺失值都會(huì)導(dǎo)致信息丟失。這是因?yàn)檎f缺少數(shù)據(jù)本身就是信息性的,算法知道它。當(dāng)丟失的數(shù)據(jù)不是隨機(jī)發(fā)生時(shí),這一點(diǎn)尤為重要。舉一個(gè)例子,一個(gè)特定種族的大多數(shù)人拒絕回答某個(gè)問題。

丟失的數(shù)據(jù)可以用例如0填充,但在計(jì)算任何統(tǒng)計(jì)值或繪制分布時(shí)必須忽略這些零。雖然分類數(shù)據(jù)可以用“缺失”填寫:一個(gè)新的類別,它告訴我們?nèi)鄙龠@一數(shù)據(jù)。

離群(極端)值

它們的值與所有其他觀察值顯著不同。遠(yuǎn)離Q1和Q3四分位數(shù)的任何數(shù)據(jù)值(1.5 * IQR)都被認(rèn)為是異常值。

在被證明之前,異常值是無辜的。話雖如此,除非有充分理由,否則不應(yīng)刪除它們。例如,人們可以注意到一些不太可能發(fā)生的奇怪的,可疑的值,因此決定將它們刪除。雖然,他們值得調(diào)查之前刪除。

值得一提的是,某些模型,如線性回歸,對(duì)異常值非常敏感。換句話說,異常值可能會(huì)使模型脫離大多數(shù)數(shù)據(jù)所在的位置。

記錄和交叉數(shù)據(jù)集錯(cuò)誤

這些錯(cuò)誤是由于在同一行中有兩個(gè)或多個(gè)值,或者是在彼此相互矛盾的數(shù)據(jù)集中。例如,如果我們有一個(gè)關(guān)于城市生活成本的數(shù)據(jù)集?偭袛(shù)必須等于租金,運(yùn)輸和食物的總和。同樣,孩子不能結(jié)婚。員工的工資不能低于計(jì)算的稅額。相同的想法適用于不同數(shù)據(jù)集的相關(guān)數(shù)據(jù)。

驗(yàn)證

完成后,應(yīng)通過重新檢查數(shù)據(jù)并確保其規(guī)則和約束確實(shí)存在來驗(yàn)證正確性。

例如,在填寫缺失數(shù)據(jù)后,它們可能違反任何規(guī)則和約束。如果不可能,可能會(huì)涉及一些手動(dòng)校正。

報(bào)告

報(bào)告數(shù)據(jù)的健康程度對(duì)清潔同樣重要。如前所述,軟件包或庫可以生成所做更改的報(bào)告,違反了哪些規(guī)則以及多少次。

除了記錄違規(guī)外,還應(yīng)考慮這些錯(cuò)誤的原因。為什么他們發(fā)生?

總結(jié)

我很高興你能堅(jiān)持到最后。但是,如果不接受質(zhì)量文化,所提到的內(nèi)容都沒有價(jià)值。

無論驗(yàn)證和清理過程多么強(qiáng)大和強(qiáng)大,隨著新數(shù)據(jù)的進(jìn)入,我們必須將繼續(xù)受苦。最好是保護(hù)自己免受疾病的侵害,而不是花時(shí)間和精力去補(bǔ)救它。

文章原標(biāo)題《the-ultimate-guide-to-data-cleaning》

作者:OMAR ELGABRY譯者:烏拉烏拉

標(biāo)簽: [db:TAGG]

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:IT和云計(jì)算專業(yè)人員如何追求數(shù)據(jù)中心效率

下一篇:Gartner報(bào)告:我們正處于數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)工具 “大爆炸”的時(shí)代