1. 程式人生 >實用技巧 >其它 >還原填充錯誤的缺失資料

還原填充錯誤的缺失資料


手動方法 map() 函式對映

map(func)

import pandas as pd
import numpy as np

## -------
df = pd.DataFrame()
df['身高'] = [170, -1, 190, 150, 166]
df['體重'] = [50, 65, 70, 60, -1]
df.index = ['a', 'b', 'c', 'd', 'e']  ## 代表人名
## ----

結果:

還原填充錯誤的缺失資料

很明顯人的身高不可能是 -1 , 體重也不可能是 -1 , 這些資料屬於有違反常識的資料值。 因此這裡是誤填充操作(或者可以理解成:異常值)

那麼我們應該如何發現它們,並將其替換成缺失值形式呢?

df['身高'] = df['身高'].map(lambda x : x if x != -1 else None)
df['體重'] = df['體重'].map(lambda x : x if x != -1 else None)
df

結果:

還原填充錯誤的缺失資料

自動方法 for迴圈 + replace() 替換

如果我們的資料列數較小的時候,我們可以進行手動填充,但是有許多資料列都存在缺失,那就需要進行自動填充以提高效率

columns = df[df == -1].columns.tolist()
for col in columns:
    df[col].replace([-1], [np.nan], inplace=True)
df

注意: 這裡使用的 np.nan 和之前使用的 None 均可以代表缺失資料,None (是 python中的 ) , np.nan(是numpy中的)

還原填充錯誤的缺失資料

說明

以上這些心得是在特徵工程中體會得到的,如果資料存在缺失,那麼對缺失值的操作不是很方便,不妨先將缺失值用一些獨特的值來填充,然後進行特徵構建組合,這樣的話可能會破壞原始的資料結構,但是卻能開啟資料各個特徵之間的關係,可以結合具體業務展開。
使用方法:

1. 缺失資料檢查
2. 缺失資料用獨特的值填充 (一般使用-1, -9999,等)
3. 進行特徵構建
4. 判斷構架之後特徵的相關性
5. 把資料還原會原始狀態(本blog的內容)

以上方法結合具體的情況使用。