新聞資訊  快訊  焦點  財經  政策  社會
互 聯 網   電商  金融  數據  計算  技巧
生活百科  科技  職場  健康  法律  汽車
手機百科  知識  軟件  修理  測評  微信
軟件技術  應用  系統  圖像  視頻  經驗
硬件技術  知識  技術  測評  選購  維修
網絡技術  硬件  軟件  設置  安全  技術
程序開發  語言  移動  數據  開源  百科
安全防護  資訊  黑客  木馬  病毒  移動
站長技術  搜索  SEO  推廣  媒體  移動
財經百科  股票  知識  理財  財務  金融
教育考試  育兒  小學  高考  考研  留學
您當前的位置:首頁 > 互聯網百科 > 云計算

數據清理的終極指南

時間:2019-06-14 10:42:49  來源:  作者:

摘要: 有數據不知道怎么清理?看完這篇保你不慌!

 

數據清理的終極指南

 

 

我花了幾個月的時間分析來自傳感器、調查及日志等相關數據。無論我用多少圖表,設計多么復雜的算法,結果總是會與預期不同。更糟糕的是,當你向首席執行官展示你的新發現時,他/她總會發現缺陷,你的發現與他們的理解完全不符-?畢竟,他們是比你更了解領域的專家,而你只是數據工程師或開發人員。

你為你的模型引入了大量臟數據,沒有清理數據,你告訴你的公司用這些結果做事情,結果肯定是錯的。數據不正確或不一致會導致錯誤的結論,因此,清理和理解數據對結果的質量都會有很大影響。

垃圾進垃圾出

實際上,簡單算法的作用可能超過復雜的算法,因為它被賦予了足夠高質量的數據。

質量數據優于花哨的算法

出于這些原因,重要的是要有一個分步指南,一個備忘單。首先,我們想要實現的目標是什么?質量數據是什么意思?質量數據的衡量標準是什么?了解你想要完成的任務,在采取任何行動之前,你的最終目標至關重要。

目錄:

· 數據質量(合法性,準確性,完整性,一致性)

· 工作流程(檢查,清潔,驗證,報告)

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

· 清理(??無關數據,重復數據,類型轉換,語法錯誤)

· 驗證

· 總結

數據質量

除了維基百科上的質量標準之外,我找不到更好的解釋質量標準。所以,我將在這里總結一下。

合法性

數據符合定義的業務規則或約束的程度。

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

· 范圍約束:通常,數字或日期應在特定范圍內。

· 強制約束:某些列不能為空。

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

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

· 外鍵約束在關系數據庫中,外鍵列不能具有引用的主鍵中不存在的值。

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

· 跨領域驗證:跨越多個領域的某些條件必須成立。例如,患者出院的日期不能早于入院日期。

準確性

數據接近真實值的程度。

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

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

完整性

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

一致性

數據在同一數據集內或跨多個數據集的一致程度。當數據集中的兩個值相互矛盾時,就會出現不一致。

離婚后,有效年齡,例如10歲,可能與婚姻狀況不符。客戶被記錄在具有兩個不同地址的兩個不同表中。哪一個是真的?

工作流程

工作流程一共四個步驟,旨在生成高質量的數據,并考慮到我們所討論的所有標準。

1.檢查:檢測不正確和不一致的數據。

2.清潔:修復或刪除發現的異常。

3.驗證:清潔后,檢查結果以驗證是否正確。

4.報告:記錄所做更改和當前存儲數據質量的報告。

實際上,你所看到的順序過程是一個迭代的,無窮無盡的過程。當檢測到新的缺陷時,可以從驗證到檢查。

檢查

檢查數據非常耗時,并且需要使用許多方法來探索用于錯誤檢測的基礎數據。下面是其中的一些:

數據分析

一個匯總統計有關數據的數據分析是真正有用的,它可以提供有關數據質量的總體思路。例如,檢查特定列是否符合特定標準或模式。數據列是記錄為字符串還是數字?丟失了多少個值?列中有多少個唯一值及其分布?此數據集是否與另一個數據集鏈接或有關系?

可視化

通過使用諸如平均值、標準偏差、范圍或分位數等統計方法分析和可視化數據,可以找到意外且因此錯誤的值。

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

軟件包

使用你的語言提供的幾個軟件包或庫將允許你指定約束并檢查數據是否違反這些約束。此外,他們不僅可以生成違反哪些規則的報告,還可以創建哪些列與哪些規則相關聯的圖表。

 

數據清理的終極指南

 

 

清潔

數據清理涉及基于問題和數據類型的不同技術。可以應用不同的方法,每種方法都有自己的權衡。總的來說,不正確的數據被刪除,糾正或估算。

不相關的數據

不相關的數據是那些實際上不需要的數據,并且不適合我們試圖解決的問題。例如,如果我們分析有關人口總體健康狀況的數據,則不需要電話號碼。同樣,如果你只對某個特定國家/地區感興趣,則不希望包含所有其他國家/地區。只有當你確定某個數據不重要時,你才可以放棄它。否則,你就需要探索特征變量之間的相關矩陣。

即使你注意到沒有相關性,你應該問一個域專家。你永遠不會知道,一個似乎無關緊要的特征,從實際經驗來看,可能非常重要。

重復項

重復項是數據集中重復的數據點。

例如:

· 數據來自不同來源;

· 用戶可能會兩次點擊提交按鈕,認為表單實際上沒有提交;

· 提交了兩次在線預訂請求,糾正了第一次意外輸入的錯誤信息。

類型轉換

確保將數字存儲為數字數據類型,日期應存儲為日期對象,或Unix時間戳(秒數),依此類推。如果需要,可以將分類值轉換為數字和從數字轉換。

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

語法錯誤

刪除空格:應刪除字符串開頭或結尾的額外空格。

" hello world " => "hello world

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

313 => 000313 (6 digits)

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

Gender

m

Male

fem.

FemalE

Femle

這個分類變量被認為有5個不同的類,而不是預期的2個:男性和女性。因此,我們的職責是從上述數據中識別出每個值是男性還是女性。我們可以怎么做呢?

第一種解決方案是手動每個值映射到“男性”或“女性”。

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

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

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

第三種解決方案是使用模糊匹配:一種算法,用于識別預期字符串與給定字符串之間的距離。它的基本實現計算將一個字符串轉換為另一個字符串所需的操作數。

Gender male female

m 3 5

Male 1 3

fem. 5 3

FemalE 3 2

Femle 3 1

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

City Distance from "lisbon"

lisbon 0

lisboa 1

Lisbon 1

lisbona 2

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

規范

我們的職責是不僅要識別拼寫錯誤,還要將每個值放在同一標準格式中。對于字符串,請確保所有值都是小寫或大寫。

對于數值,請確保所有值都具有特定的測量單位。例如,高度可以是米和厘米。1米的差異被認為與1厘米的差異相同。因此,這里的任務是將高度轉換為單個單位。

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

縮放/轉換

縮放意味著轉換數據以使其適合特定的比例,例如0-100或0-1。

例如,可以將學生的考試分數重新縮放為百分比(0-100)而不是GPA(0-5)。

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

規范化

雖然規范化也將值重新調整為0-1的范圍,但目的是轉換數據以使其正常分布。為什么?

因為在大多數情況下,如果我們要使用依賴于正態分布數據的統計方法,我們會對數據進行標準化。怎樣完成?

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

根據使用的縮放方法,數據分布的形狀可能會發生變化。例如“標準Z分數”和“學生t統計量”保留了形狀,而日志功能則沒有。

 

數據清理的終極指南

 

 

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

缺失值

鑒于缺失值是不可避免的,讓我們在遇到它們時該怎么做。有三種或許更多的方法來處理它們。

一、Drop

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

這在進行統計分析時特別有用。

二、Impute

這意味著根據其他觀察結果計算缺失值。有很多方法可以做到這一點:

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

當原始數據不偏斜時,平均值最有用,而中值更穩健,對異常值不敏感。在正態分布的數據中,可以獲得與均值相差2個標準偏差的所有值。接下來,通過生成之間的隨機數填寫缺失值(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、使用線性回歸。根據現有數據,可以計算出兩個變量之間的最佳擬合線,比如房價與面積m2。值得一提的是,線性回歸模型對異常值很敏感。

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

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

三、Flag

一些人認為,無論我們使用何種插補方法,填寫缺失值都會導致信息丟失。這是因為說缺少數據本身就是信息性的,算法知道它。當丟失的數據不是隨機發生時,這一點尤為重要。舉一個例子,一個特定種族的大多數人拒絕回答某個問題。

丟失的數據可以用例如0填充,但在計算任何統計值或繪制分布時必須忽略這些零。雖然分類數據可以用“缺失”填寫:一個新的類別,它告訴我們缺少這一數據。

離群(極端)值

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

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

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

記錄和交叉數據集錯誤

這些錯誤是由于在同一行中有兩個或多個值,或者是在彼此相互矛盾的數據集中。例如,如果我們有一個關于城市生活成本的數據集。總列數必須等于租金,運輸和食物的總和。同樣,孩子不能結婚。員工的工資不能低于計算的稅額。相同的想法適用于不同數據集的相關數據。

驗證

完成后,應通過重新檢查數據并確保其規則和約束確實存在來驗證正確性。

例如,在填寫缺失數據后,它們可能違反任何規則和約束。如果不可能,可能會涉及一些手動校正。

報告

報告數據的健康程度對清潔同樣重要。如前所述,軟件包或庫可以生成所做更改的報告,違反了哪些規則以及多少次。

除了記錄違規外,還應考慮這些錯誤的原因。為什么他們發生?

總結

我很高興你能堅持到最后。但是,如果不接受質量文化,所提到的內容都沒有價值。

無論驗證和清理過程多么強大和強大,隨著新數據的進入,我們必須將繼續受苦。最好是保護自己免受疾病的侵害,而不是花時間和精力去補救它。

文章原標題《the-ultimate-guide-to-data-cleaning》作者:OMAR ELGABRY

譯者:烏拉烏拉,審校:袁虎。
 



Tags:數據   點擊:()  評論:()
聲明:本站部分內容來自互聯網,內容觀點僅代表作者本人,如有任何版權侵犯請與我們聯系,我們將立即刪除。
▌相關評論
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
▌相關推薦
典型互聯網大數據平臺架構首先我們來看一個典型的互聯網大數據平臺的架構,如下圖所示: 在這張架構圖中,大數據平臺里面向用戶的在線業務處理組件用褐色標示出來,這部分是屬于互...【詳細內容】
2019-10-10   數據  點擊:(2)  評論:(0)  加入收藏
(1)、 插入數據并且返回當前插入的自增ID $db = Db::name('user'); $id = $db->insertGetId(['password'=>'123','username'=>'888&#...【詳細內容】
2019-10-10   數據  點擊:(2)  評論:(0)  加入收藏
一、FTP客戶端發送數據到FTP服務器端,詳述其工作過程。兩臺機器的連接情況如下圖所示: 詳細解答如下1.1、假設初始設置如下所示:客戶端FTP端口號為:32768服務器端FTP端口號為:21...【詳細內容】
2019-10-09   數據  點擊:(4)  評論:(0)  加入收藏
我們平常的生活工作中,百度、谷歌這些搜索網站已經成為了我們受教解惑的學校,俗話說得好,“有問題找度娘”。那么百度是如何在海量數據中找到自己需要的數據呢?為什么它搜索的速...【詳細內容】
2019-10-08   數據  點擊:(7)  評論:(0)  加入收藏
API返回對象ResponseDTO<T>,包括以下部分 result:調用是否成功 code:狀態碼 msg:結果消息 data:響應數據,泛型<T>,可以接收任何數據類型ResponseDTO源碼如下:package com.study.web...【詳細內容】
2019-10-08   數據  點擊:(15)  評論:(0)  加入收藏
大數據背景對于業務數據數據量的暴增,用戶智能化需求提升。在這個DT的時代,大數據的開發也就應運而生了,大數據開發必須解決兩個問題,大數據量如何統一存儲,大數據量如何統一計算...【詳細內容】
2019-10-08   數據  點擊:(7)  評論:(0)  加入收藏
數據模型層次模型以上下級的層次關系來組織數據的一種方式,其數據結構類似一棵樹; 網狀模型將每個數據節點與其他很多節點連接起來,其數據結構類似城市的交通網; 關系模型將數據...【詳細內容】
2019-10-08   數據  點擊:(0)  評論:(0)  加入收藏
MySQL是一個強大的開源數據庫。隨著MySQL上的應用越來越多,MySQL逐漸遇到了瓶頸。這里提供一些關于Mysql 數據庫查詢優化的24條優化建議,僅供參考。 Mysql 查詢優化1、使用慢...【詳細內容】
2019-10-08   數據  點擊:(4)  評論:(0)  加入收藏
數據是一個互聯網公司的命脈,數據庫的安全以及備案的完整性是至關重要的,所以我們需要在工作中要很熟練的掌握數據的備份與恢復,這也是一個合格的運維DBA必須具有的職業技能....【詳細內容】
2019-10-08   數據  點擊:(3)  評論:(0)  加入收藏
2019年“十一”黃金周結束,電商、旅行、電影等消費領域全面呈現向好趨勢。商務部最新數據顯示,今年“十一”黃金周,購物、餐飲等傳統消費亮點紛呈,旅游、文化、體育等新興消費蓬...【詳細內容】
2019-10-08   數據  點擊:(6)  評論:(0)  加入收藏
索引過程圖解 api向集群發送索引請求,集群會使用負載均衡節點來處理該請求,如果沒有單獨的負載均衡點,master節點會充當負載均衡點的角色。 負載均衡節點根據routing參數來計...【詳細內容】
2019-09-29   數據  點擊:(3)  評論:(0)  加入收藏
目前可以連接70多種數據源,分為本地連接和服務器連接。 Tableau支持的本地連接包括Excel、txt、csv、json等各類常見的源數據格式,還支持多種空間文件, 為使用地圖分析提供了條件。...【詳細內容】
2019-09-29   數據  點擊:(12)  評論:(0)  加入收藏
我們常說阿里的運營,騰訊的產品,百度的技術。這背后是對百度技術的肯定,我們都知道,百度是靠搜索引擎起家,搜索引擎與電商與社交產品有明顯的區別,有著非常強的技術驅動性。今天我...【詳細內容】
2019-09-29   數據  點擊:(8)  評論:(0)  加入收藏
如果你的數據庫運行緩慢,或者出于某種原因無法響應查詢,技術棧中每個依賴數據庫的組件都會遭受性能問題。為了保證數據庫的平穩運行,你可以主動監控以下這個與性能及資源利用率...【詳細內容】
2019-09-29   數據  點擊:(9)  評論:(0)  加入收藏
一、前言在Android開發中,當需要存儲鍵值對時,一般都是用java自帶的HashMap。但是細心的同學可能會發現,有時候如果實際的HashMap的key-vaule中的key是Integer時,AndroidStudio...【詳細內容】
2019-09-27   數據  點擊:(11)  評論:(0)  加入收藏
前言:目前MySQL數據庫最常用的是主從架構,大多數高可用架構也是通過主從架構演變而來。但是主從架構運行時間長久后容易出現數據不一致的情況,比如因從庫可寫造成的誤操作或者...【詳細內容】
2019-09-27   數據  點擊:(4)  評論:(0)  加入收藏
一、數據庫架構原則 高可用 高性能 一致性 擴展性二、常見的架構方案方案一:主備架構,只有主庫提供讀寫服務,備庫冗余作故障轉移用 jdbc:mysql://vip:3306/xxdb1、高可用分析:高...【詳細內容】
2019-09-27   數據  點擊:(6)  評論:(0)  加入收藏
導讀:大多數情況下,數據分析的過程必須包括數據探索的過程。數據探索可以有兩個層面的理解:一是僅利用一些工具,對數據的特征進行查看;二是根據數據特征,感知數據價值,以決定是否需...【詳細內容】
2019-09-27   數據  點擊:(3)  評論:(0)  加入收藏
搜索引擎推廣是通過搜索引擎優化,搜索引擎排名以及研究關鍵詞的流行程度和相關性在搜索引擎的結果頁面取得較高的排名的營銷手段。一、優勢一:提升品牌知名度企業做搜索引擎推...【詳細內容】
2019-09-27   數據  點擊:(6)  評論:(0)  加入收藏
概述很多時候在mysql處理死鎖問題時,由于show engine innodb status輸出來的死鎖日志無任務事務上下文,并不能很好地診斷相關事務所持有的所有鎖信息,包括:鎖個數、鎖類型等。下...【詳細內容】
2019-09-27   數據  點擊:(3)  評論:(0)  加入收藏
推薦資訊
相關文章
欄目更新
欄目熱門
31选7开奖11185