【Q001】sklearn的LabelEncoder使用问题处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fantacy10000/article/details/84565915

在进行数据清洗过程中,为了便于计算处理,需要对字符串类型特征进行编码操作。
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。

猜你喜欢

转载自blog.csdn.net/fantacy10000/article/details/84565915