使用 Python 進行數據清洗的完整指南


你一定聽說過這句著名的數據科學名言:

在數據科學項目中, 80% 的時間是在做數據處理。

如果你沒有聽過,那么請記住:數據清洗是數據科學工作流程的基礎。機器學習模型會根據你提供的數據執行,混亂的數據會導致性能下降甚至錯誤的結果,而干凈的數據是良好模型性能的先決條件。當然干凈的數據並不意味着一直都有好的性能,模型的正確選擇(剩余 20%)也很重要,但是沒有干凈的數據,即使是再強大的模型也無法達到預期的水平。

在本文中將列出數據清洗中需要解決的問題並展示可能的解決方案,通過本文可以了解如何逐步進行數據清洗。

缺失值

當數據集中包含缺失數據時,在填充之前可以先進行一些數據的分析。因為空單元格本身的位置可以告訴我們一些有用的信息。例如:

  • NA值僅在數據集的尾部或中間出現。這意味着在數據收集過程中可能存在技術問題。可能需要分析該特定樣本序列的數據收集過程,並嘗試找出問題的根源。
  • 如果列NA數量超過 70–80%,可以刪除該列。
  • 如果 NA 值在表單中作為可選問題的列中,則該列可以被額外的編碼為用戶回答(1)或未回答(0)。
  1. missingno

這個python庫就可以用於檢查上述情況,並且使用起來非常的簡單,例如下圖中的白線是 NA:

  1. import missingno as msno
  2. msno.matrix(df)

對於缺失值的填補計算有很多方法,例如:

  • 平均,中位數,眾數
  • kNN
  • 零或常數等

不同的方法相互之間有優勢和不足,並且沒有適用於所有情況的“最佳”技術。具體可以參考我們以前發布的文章

異常值

異常值是相對於數據集的其他點而言非常大或非常小的值。它們的存在極大地影響了數學模型的性能。讓我們看一下這個簡單的示例:

在左圖中沒有異常值,我們的線性模型非常適合數據點。在右圖中有一個異常值,當模型試圖覆蓋數據集的所有點時,這個異常值的存在會改變模型的擬合方式,並且使我們的模型不適合至少一半的點。

對於異常值來說我們有必要介紹一下如何確定異常,這就要從數學角度明確什么是極大或極小。

大於Q3+1.5 x IQR或小於Q1-1.5 x IQR都可以作為異常值。IQR(四分位距) 是 Q3 和 Q1 之間的差 (IQR = Q3-Q1)。

可以使用下面函數來檢查數據集中異常值的數量:

完整文章:

https://www.overfit.cn/post/7728efa2841148bdbb184a6cdd7aaca3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM