1. 程式人生 > >【Q001】sklearn的LabelEncoder使用問題處理

【Q001】sklearn的LabelEncoder使用問題處理

在進行資料清洗過程中,為了便於計算處理,需要對字串型別特徵進行編碼操作。
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。