數據清洗技術:學習簡單有效的數據清洗方法
已發表: 2020-01-26數據清洗是數據科學的重要組成部分。 使用不純的數據可能會導致許多困難。 今天,我們將討論同樣的問題。
您將了解為何數據清理至關重要、哪些因素會影響您的數據質量以及如何清理您擁有的數據。 這是一份詳細的指南,因此請務必將其添加為書籤以供將來參考。
讓我們開始吧。
目錄
為什麼需要數據清洗
數據清理可能看起來枯燥乏味,但它是您作為數據科學專業人士必須完成的最重要的任務之一。 擁有錯誤或質量差的數據可能對您的流程和分析有害。 糟糕的數據可能會導致出色的算法失敗。
另一方面,高質量的數據可以使簡單的算法為您提供出色的結果。 數據清洗技術有很多,您應該熟悉它們以提高數據質量。 並非所有數據都是有用的。 所以這是影響數據質量的另一個主要因素。
閱讀: R 中的聚類分析
例如,假設您的公司有一個員工地址列表。 現在,如果您的數據還包括您的客戶的一些地址,它不會損壞列表嗎? 你分析這份清單的努力不會白費嗎? 在這個數據支持的市場中,學習數據科學以改善您的業務決策至關重要。
數據清理必不可少的原因有很多。 下面列出了其中一些:
效率
擁有乾淨的數據(沒有錯誤和不一致的值)可以幫助您更快地執行分析。 通過事先執行此任務,您將節省大量時間。 在使用之前清理數據時,您可以避免多個錯誤。 如果您使用包含錯誤值的數據,您的結果將不准確。
而且很有可能,您將不得不再次重做整個任務,這可能會浪費大量時間。 如果您選擇在使用數據之前對其進行清理,您可以更快地生成結果並避免再次重做整個任務。
誤差範圍
當你不使用準確的數據進行分析時,你肯定會犯錯誤。 假設您已經花費大量精力和時間來分析一組特定的數據集。 你非常渴望向你的上級展示結果,但在會議上,你的上級指出了一些錯誤,情況變得有點尷尬和痛苦。
你不想避免這樣的錯誤發生嗎? 它們不僅會造成尷尬,而且還會浪費資源。 數據清理可以幫助您在這方面完全停止它是一種廣泛的做法,您應該學習用於清理數據的方法。
使用帶有乾淨數據的簡單算法比使用帶有不干淨數據的高級算法要好得多。
確定數據質量
數據有效嗎? (有效性)
您的數據的有效性是它遵循您的特定要求規則的程度。 例如,您如何導入不同客戶的電話號碼,但在某些地方,您在數據中添加了電子郵件地址。 現在,由於您明確需要電話號碼,因此電子郵件地址將無效。
當輸入法沒有被正確檢查時,就會發生有效性錯誤。 您可能正在使用電子表格來收集數據。 您可能會在電子表格的單元格中輸入錯誤的信息。
您的數據必須符合多種約束才能有效。 他們來了:
範圍:
某些類型的數字必須在特定範圍內。 例如,您一天可以運輸的產品數量必須具有最小值和最大值。 數據肯定會有一個特定的範圍。 會有一個起點和一個終點。
數據類型:
某些數據單元格可能需要特定類型的數據,例如數字、布爾值等。例如,在布爾部分中,您不會添加數值。
強制約束:
在每種情況下,您的數據都應遵循一些強制性約束。 強制限制取決於您的具體需求。 當然,數據的特定列不應為空。 例如,在您的客戶姓名列表中,“姓名”一欄不能為空。
跨領域考試:
某些條件會影響特定形式的多個數據字段。 假設航班的起飛時間不能早於它的到達時間。 在資產負債表中,客戶的借方和貸方的總和必須相同。 不能不一樣。
這些值相互關聯,這就是您可能需要執行跨領域檢查的原因。
獨特要求:
數據的具體類型有獨特的限制。 兩個客戶不能擁有相同的客戶支持票。 此類數據必須對特定領域是唯一的,不能被多個領域共享。
設置成員限制:
某些值僅限於特定集合。 比如,性別可以是男性、女性或未知。
常規模式:
一些數據遵循特定的格式。 例如,電子郵件地址的格式為“[email protected]”。 同樣,電話號碼有十位數字。
如果數據不是所需的格式,它也將是無效的。
如果一個人在輸入電子郵件地址時省略了“@”,那麼該電子郵件地址將無效,不是嗎? 檢查數據的有效性是確定其質量的第一步。 大多數時候,輸入無效信息的原因是人為錯誤。
擺脫它將幫助您簡化流程並事先避免無用的數據值。
準確性
既然您知道您擁有的大部分數據都是有效的,您就必須專注於確定其準確性。 即使數據是有效的,也不意味著數據是準確的。 確定準確性可以幫助您確定您輸入的數據是否準確。
客戶的地址可以採用正確的格式,但不一定是正確的。 也許電子郵件有一個額外的數字或字符導致它出錯。 另一個例子是客戶的電話號碼。
閱讀:用於數據科學的頂級機器學習 API
如果電話號碼包含所有數字,則它是有效值。 但這並不意味著它是真的。 當您有有效值的定義時,找出無效值很容易。 但這無助於檢查其準確性。 檢查數據值的準確性需要您使用第三方來源。
這意味著您將不得不依賴與您當前使用的數據源不同的數據源。 您必須交叉檢查您的數據以確定它是否準確。 數據清洗技術並沒有很多用於檢查數據值準確性的解決方案。
但是,根據您使用的數據類型,您可能會找到可以在這方面為您提供幫助的資源。 您不應該將準確度與精確度混淆。
準確度與精密度
雖然準確性取決於確定您輸入的數據是否正確,但準確性要求您提供更多有關相同的詳細信息。 客戶可能會在您的數據字段中輸入名字。 但如果沒有姓氏,要更準確就很難了。
另一個示例可以是地址。 假設你問一個人他/她住在哪裡。 他們可能會說他們住在倫敦。 那可能是真的。 但是,這不是一個準確的答案,因為您不知道他們住在倫敦的哪個地方。
一個準確的答案是給你一個街道地址。
完整性
擁有所需的所有信息幾乎是不可能的。 完整性是您了解所有必需值的程度。 完整性比準確性或有效性更具挑戰性。 那是因為你不能假設一個值。 您只需輸入已知事實。
您可以嘗試通過重新進行數據收集活動(再次接近客戶、重新採訪人員等)來完成您的數據。 但這並不意味著您能夠徹底完成您的數據。
假設您重新採訪人們以獲得您之前需要的數據。 現在,這個場景有召回的問題。 如果你再次問他們同樣的問題,他們很可能不記得他們之前回答了什麼。 這可能會導致他們,給你錯誤的答案。
你可能會問他五個月前他們在讀什麼書。 他們可能不記得了。 同樣,您可能需要輸入每個客戶的聯繫信息。 但其中一些可能沒有電子郵件地址。 在這種情況下,您必須將這些列留空。

如果您的系統要求您填寫所有列,您可以嘗試在此處輸入“缺失”或“未知”。 但是輸入這樣的值並不意味著數據是完整的。 它仍然被稱為不完整的。
一致性
完整性旁邊是一致性。 您可以通過比較兩個相似的系統來衡量一致性。 或者,您可以檢查同一數據集中的數據值,以查看它們是否一致。 一致性可以是相關的。 例如,客戶的年齡可能是 15 歲,這是一個有效值並且可能是準確的,但他們也可能在同一系統中被聲明為老年人。
在這種情況下,您需要交叉檢查數據,類似於測量準確性,並查看哪個值是正確的。 客戶是 15 歲嗎? 還是客戶是老年人? 這些值中只有一個可能為真。
有多種方法可以使您的數據保持一致。
檢查不同的系統:
您可以查看另一個類似的系統,以了解您擁有的價值是否真實。 如果您的兩個系統相互矛盾,檢查第三個系統可能會有所幫助。
在我們前面的例子中,假設你檢查第三個系統,發現客戶的年齡是 65 歲。這表明第二個系統,說客戶是老年人,會成立。
查看最新數據:
另一種提高數據一致性的方法是檢查最近的值。 在特定情況下,它可能對您更有利。 您的記錄中可能有兩個不同的客戶聯繫電話。 最近的一個可能會更可靠,因為客戶可能切換了號碼。
檢查來源:
檢查數據可靠性的最簡單的方法是簡單地聯繫來源。 在我們的客戶年齡示例中,您可以選擇直接聯繫客戶並詢問他們的年齡。 但是,並非在所有情況下都可行,直接聯繫源頭可能非常棘手。 也許客戶沒有回應,或者他們的聯繫信息不可用。
均勻度
您應該確保您在數據集中輸入的所有值都採用相同的單位。 如果您輸入 SI 單位進行測量,則在某些地方不能使用英制。 另一方面,如果您在某個地方輸入了以秒為單位的時間,那麼您應該在整個數據集中以這種格式輸入它。
閱讀:用於數據科學的 SQL
檢查記錄的一致性非常容易。 簡單的檢查可以揭示特定值是否在所需的單位中。 您用於輸入數據的單位取決於您的具體要求。
數據清理技術
您對數據清理技術的選擇取決於很多因素。 首先,您要處理什麼樣的數據? 它們是數值還是字符串? 除非您處理的值太少,否則您不應該期望只使用一種技術來清理您的數據。
您可能需要使用多種技術以獲得更好的結果。 您必須處理的數據類型越多,您必須使用的清理技術就越多。 熟悉所有這些方法將幫助您糾正錯誤並擺脫無用的數據。
1.刪除不相關的值
您應該做的第一件事是從系統中刪除無用的數據。 任何無用或不相關的數據都是您不需要的。 它可能不適合您的問題的上下文。
您可能只需要測量銷售人員的平均年齡。 那麼他們的電子郵件地址就不需要了。 另一個例子是您可能正在查看您在一個月內聯繫了多少客戶。 在這種情況下,您不需要上個月聯繫的人的數據。
但是,在刪除特定數據之前,請確保它是不相關的,因為您可能需要它稍後檢查其相關值(以檢查一致性)。 如果您可以在刪除數據之前從更有經驗的專家那裡獲得第二意見,請隨時這樣做。
您不想刪除某些值並在以後後悔該決定。 但是一旦你確信數據是不相關的,就把它扔掉。
2.擺脫重複值
重複項類似於無用的值——您不需要它們。 它們只會增加您擁有的數據量並浪費您的時間。 您可以通過簡單的搜索擺脫它們。 出於多種原因,您的系統中可能存在重複值。
也許你結合了多個來源的數據。 或者,也許提交數據的人錯誤地重複了一個值。 一些用戶在填寫在線表格時點擊了兩次“輸入”。 您應該在找到重複項後立即刪除它們。
3.避免拼寫錯誤(和類似的錯誤)
錯別字是人為錯誤的結果,可以出現在任何地方。 您可以通過多種算法和技術修復拼寫錯誤。 您可以映射這些值並將它們轉換為正確的拼寫。 錯別字對於修復是必不可少的,因為模型以不同的方式處理不同的值。 字符串很大程度上依賴於它們的拼寫和大小寫。
'George' 與 'george' 不同,儘管它們的拼寫相同。 同樣,“Mike”和“Mice”彼此不同,儘管它們具有相同數量的字符。 您需要查找諸如此類的拼寫錯誤並適當地修復它們。
另一個類似於拼寫錯誤的錯誤是字符串大小。 您可能需要填充它們以使它們保持相同的格式。 例如,您的數據集可能只要求您擁有 5 位數字。 因此,如果您有任何只有四位數字的值,例如“3994”,您可以在開頭添加一個零以增加其位數。
它的值將保持與“03994”相同,但它會使您的數據保持一致。 字符串的另一個錯誤是空格。 確保將它們從字符串中刪除以保持一致。
4.轉換數據類型
數據類型在您的數據集中應該是統一的。 字符串不能是數字,數字也不能是布爾值。 在轉換數據類型時,您應該牢記以下幾點:
- 將數值保留為數字
- 檢查數字是否為字符串。 如果您將其作為字符串輸入,則將不正確。
- 如果您無法轉換特定的數據值,則應輸入“NA 值”或類似的內容。 確保您還添加了一條警告以表明該特定值是錯誤的。
5. 處理缺失值
總會有一段缺失的數據。 你無法避免它。 因此,您應該知道如何處理它們以保持數據乾淨且沒有錯誤。 數據集中的特定列可能有太多缺失值。 在這種情況下,明智的做法是刪除整個列,因為它沒有足夠的數據來處理。
注意事項:您不應忽略缺失值。
忽略缺失值可能是一個重大錯誤,因為它們會污染您的數據,並且您不會得到準確的結果。 有多種方法可以處理缺失值。
估算缺失值:
您可以估算缺失值,這意味著假設近似值。 您可以使用線性回歸或中值來計算缺失值。 但是,此方法有其含義,因為您無法確定這是否是真正的價值。
另一種估算缺失值的方法是從類似的數據集中復制數據。 這種方法稱為“Hot-deck imputation”。 您正在為當前記錄增加價值,同時考慮一些約束,例如數據類型和範圍。
突出缺失值:
插補並不總是處理缺失值的最佳方法。 許多專家認為,這只會導致更複雜的結果,因為它們不是“真實的”。 因此,您可以採取另一種方法並通知模型數據丟失。 告訴模型(或算法)特定值不可用也可以是一條信息。
如果隨機原因不是您缺失值的原因,則突出顯示或標記它們可能是有益的。 例如,您的記錄可能對您的調查的特定問題沒有很多答案,因為您的客戶一開始就不想回答它。
如果缺失值是數字,您可以使用 0。只需確保在統計分析期間忽略這些值即可。 另一方面,如果缺失值是分類值,則可以填寫“缺失”。
概括
我們希望您喜歡我們詳細的數據清理技術演練。 毫無疑問,有很多東西要學。
從下面的網絡研討會視頻中了解有關數據爭論的更多信息。
如果您對數據清理有任何疑問,請隨時諮詢我們的專家。
如果您想了解數據科學,請查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃是為在職專業人士創建的,提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導、1與行業導師一對一,400 多個小時的學習和頂級公司的工作協助。
為什麼數據不一致是個問題?
當同一條數據出現在多個地方時,就會出現數據冗餘,而當相同的數據以不同的形式出現在多個表中時,就會出現數據不一致。 不幸的是,數據冗餘會導致數據不一致,從而導致公司數據不准確和/或無用。 他們無法正確預測銷售以優化庫存和分銷管理程序; 他們無法檢測製造或供應鏈問題,以盡量減少成本超支和延誤; 他們無法評估客戶對新產品的興趣以改變設計或營銷活動。
您的數據應該多久清理一次?
您應該對數據進行彈簧清理的頻率完全取決於您的業務需求。 大公司會快速獲取大量數據,因此可能需要每三到六個月進行一次數據清理。 建議數據較少的小型公司每年至少清理一次數據。 如果您懷疑骯髒的數據正在花費您的金錢或對您的生產力、效率或洞察力產生負面影響,建議您計劃一次數據清理。
Tableau 是否適合數據清理?
Tableau Prep 附帶了許多清理程序,您可以使用這些程序來立即清理和調整數據。 清理臟數據可以更輕鬆地集成和分析您的數據,以及讓其他人在您共享數據時理解您的數據。