什么是缺失值?
缺失值指數據集中某些變量的值有缺少的情況,缺失值也被稱為NA(not available)值。在pandas里使用浮點值NaN(Not a Number)表示浮點數和非浮點數中的缺失值,用NaT表示時間序列中的缺失值,此外python內置的None值也會被當作是缺失值。需要注意的是,有些缺失值也會以其他形式出現,比如說用NULL,0或無窮大(inf)表示。
缺失值產生的原因: a. 數據采集時發生錯誤
b. 數據提取過程有問題
c. 業務分類需要
處理缺失值的方法:
首先了解數據缺失的原因,根據原因判斷缺失的數據是否具有特定的商業意義。如果不具備業務意義,那么可以進行以下操作:
1,刪除整條記錄(list-wise deletion):適用於缺失值非常少,不影響整體數據的情況。這種方法的優點是簡單,缺點是減少了樣本數量。
2,刪除含有大量缺失值的變量:如果某個變量包含大量的缺失值,我們可以直接刪除這個變量來保留更多的觀測,除非這個變量對於模型而言特別重要。應用這個方法需要我們在變量的重要性和觀測的數量之間做權衡。
3,用標量插補(single imputation):如果缺失值比較少,那么可以使用平均值,中位數,眾數等進行插補。
4,插值法(interpolation):先求得插值函數,然后將缺失值對應的點代入插值函數得到缺失值的近似值。常見插值方法有拉格朗日插值法、分段插值法、樣條插值法、線性插值法。
5,用模型預測(model-based imputation):通過模型來估計缺失值,是處理缺失值比較復雜的方法。 如果缺失值很多,但是比較適用模型預測。在這種情況下,我們將數據集分為兩組:一組沒有缺失值,另一組有缺少值。 第一個數據集成為模型的訓練數據集,而有缺失值的第二個數據集是測試數據集,有缺失值的變量被視為目標變量。 接下來,我們創建一個模型,根據訓練數據集的特征預測目標變量,並填充測試數據集的缺失值。我們可以使用線性回歸,隨機森林,最近鄰法,邏輯回歸等各種建模技術來執行此操作。
這種方法有兩個缺點:
- 模型的估計值通常比真實值更好
- 如果數據集中的特征與有缺少值的特征之間沒有關系,那么模型估計將不精確。
附: