数据清洗
2019-04-24 本文已影响0人
凌霄文强
数据类型转换
- 查看数据类型
data.dtypes
- 将不同的数据类型进行转换
data['id'].astype(type_name) # str, float, int
pd.to_datetime(data['date'], format='%Y-%m-%d')
冗余数据处理
- 判断是否存在冗余
data.duplicated().any() # 当数据行出现重复时,返回True
- 删除冗余数据
data.drop_duplicates() # 删除冗余数据,inplace=True可以将原数据进行替换
可以指定subset=[feature],表示当指定的特征重复时就认为数据是重复的
缺失值处理
- 判断是否存在缺失值
data.isnull()
- 删除法
缺失行的比例非常低(删除行)
data.drop(labels=data.index[data['id'].isnull()], axis=0)
缺失值所对应的特征比例非常高(删除列)
data.drop(labels='id', axis=1, inplace=True)
- 替换法
直接利用缺失特征的均值、中位数或众数对缺失值进行替换,速度快,但容易产生有偏估计,导致缺失值替换的准确性下降。
data.fillna(value={'id1':data['id1'].mode()[0], 'id2':data['id2'].mean()}, inplace=True) # 众数、平均数
- 插补法
利用监督学习对缺失值进行预测,准确性高,慢。
异常值处理
- 识别
图形法和建模法 - 箱线图
异常点:变量的数据值大于箱线图的上须或者小于箱线图的下须
异常情况 | 判断方法 |
---|---|
异常点 | x>Q3+1.5(Q3-Q1)或者x<Q1-1.5(Q3-Q1) |
极端异常点 | x>Q3+3(Q3-Q1)或者x<Q1-3(Q3-Q1) |
- 正态分布图
异常情况 | 判断方法 |
---|---|
异常点 | 均值的2标准差邻域之外 |
极端异常点 | 均值的3标准差邻域之外 |