【Q001】sklearn的LabelEncoder使用問題處理
阿新 • • 發佈:2018-11-30
在進行資料清洗過程中,為了便於計算處理,需要對字串型別特徵進行編碼操作。
sklearn中的LabelEncoder方法可以支援這一操作。
具體用法
這裡博主講的比較清楚了,下面記錄一下遇到的問題。
#資料清洗操作 def data_clean(op,trans): # 對操作表中的每個特徵進行編碼(1,2,3....) for feature in op.columns[2:]: print(op[feature].dtype) if op[feature].dtype == 'object': col_data=op[feature].fillna('NA') col_data[col_data=='']='NA' result = le.fit_transform(col_data) op[feature] = result print('op done') for feature in trans.columns[2:]: if trans[feature].dtype == 'object': col_data=trans[feature].fillna('NA') col_data[col_data=='']='NA' result=le.fit_transform(col_data) trans[feature]=result print('trans done') return op,trans
上面是常規的特徵編碼操作,注意在呼叫fit_transform前,需要對原資料中的缺失值和未知值(如空字串)進行處理。
空值:在pandas中的空值是""
缺失值:在dataframe中為nan或者naT(缺失時間),在series中為none或者nan即可
對於缺失值,fillna可以處理;
對於未知值,可以在判斷後進行制定填充。
要注意的是這兩個是不一樣的,fillna()處理不了未知值,會產生Type Error。