版权声明:本文为博主原创文章,未经博主允许不得转载。 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。