连续数值数据和有意义的离散数据,才能够送入到模型进行训练, 对于缺失值、字符串数据和离散数据必须做处理
1 缺失值检测和处理
(1)检测
df.info() 或 df.isnull()
数据量比较大:用np.sum(df.isnull().any()) 和 np.sum(df.isnull().all())
(2)处理
a.删除法;
DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
axis=0 : 按行删除; axis=1, 按列删除
b.替补法:均值、众数、中位数;
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
c.插补法
2 离散数据处理
主要是独热编码和映射处理
(1) 离散特征的取值没有大小意义
比如 book :[Chinese, math, history], 那么就使用独热编码
——如果是字符串数据,比如 book :[Chinese, math, history]
直接独热编码:pandas.get_dummies
——如果是数字数据
将其转化为array数据结构, 再调用sklearn.preprocessing.OneHotEncoder() 对其进行编码
(2) 离散特征的取值有大小意义
比如size:[X,XL,XXL], 那么就使用数值的映射{X:1,XL:2,XXL:3}
——如果是字符串数据,比如size:[X,XL,XXL]
size_mapping ={‘X’:1,‘XL’:2,‘XXL’:3}
df[‘size’] = df[‘size’].map(size_mapping )
——如果是数字数据, 比如size:[1,2,3]
不用处理,直接使用就可以了
3 其它数据转换
特殊情况:题意规定某特征有四类, 但是在收集数据的时候,该特征有22种类别
(1)将22种类别映射为4类;
(2) 根据情况按照步骤2进行清洗处理。