特征工程:数据清洗的基础操作(附python代码)

@[TOC]数据清洗方法及步骤

数据清洗的目的 – 通过对原始数据集中的残缺数据、错误数据,异常数据和重复数据等进行清理修整等操作,从而提升数学模型的性能。

真实世界中的数据状态可谓是千奇百怪,数据集会因为各种原因发生缺失、错误和重复等问题。数据清洗(Data Cleansing), 就是根据实际情况,通过一系列的数据“清理”步骤,纠正错误信息,辨析异常数据,删除重复值,以合适建模的格式输出清洗好的数据。

数据清洗的基本步骤:

  1. 识别并处理缺失值
  2. 识别并处理异常值
  3. 删除重复值
1. 识别并处理缺失值

缺失值产生的原因有很多种,如数据收集时没有记录某些观察值而导致的;也有一些缺失值是因为记录数据时没有做好记录准则导致的,例如“子女数量”,会遇到这样的记录描述:“没有”,“无”,“个”,“零”,“0个”,“NA”,“?”,等等,一些描述代表“0”值,也有的是因为漏填或错误填写而造成的。在进入数据清洗阶段前,最好是通过浏览或一些可视化的工具对数据集进行一定的全局认知,以便于在数据清洗过程中做出正确的判段和决策。

- 缺失值的识别:

检查数据集中是否存在缺失值的方法:
.info() : 查看数据有多少行,是否有缺失值,以及每列的数据类型等
.isnull():按列统计缺失值的数量
注意:因为系统只判定”None“,”NaN“是缺失值,对于"NA", “无”, "?"等描述计算机会认为它们是有效的数据,而导致错误的结果,所以在使用上述方法辨析缺失值之前,最好使用.head()方法或.sample()方法先对原始数据集进行浏览。
代码示例:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

应对错误数据的处理方法:将“NA”, "无"替换为缺失值:在这里插入图片描述
进行检查:结果显示数据“NA”,“无”已经更改为“NaN”。

在这里插入图片描述

- 缺失值的处理方法:
  1. 删除含有缺失值的记录:DataFrame的方法:dropna()、drop() 在这里插入图片描述
    可以根据实际情况判定是否删除含有缺失值的样本记录或属性例,如考虑缺失值记录在整个有效数据中的占比等。个人建模经验,某些情况下直接删除含有缺失值的记录,并不会降低模型的性能,甚至模型的性能会比使用填充值的模型更好。如果缺失值发生在响应值(response)上,一般而言建议删除这些记录,因为填充值的精确性会对模型精确性产生较大的影响。

  2. 对缺失值进行“0”值填充:.fillna(“0”)在这里插入图片描述

  3. 对缺失值进行统计数据填充(包括:均值、中位数或众数等):如:fillna(median),fillna(mean);也可使用scikit-learn中的imputer()方法来对整个数据集快速进行缺失值填充:在这里插入图片描述在这里插入图片描述
    Imputer类也可以使用在机器学习的流水线上,在此不多叙述。

  4. 调用回归方法对缺失值进行预测并填充: 如线性回归,树回归等

2. 识别并处理异常值

在进行数据清洗的时候,除了明显的错误数据,还有一些异常数据。异常值(又称为离群值)是指记录样本中的个别数据,其数值明显偏离该属性样本的其余观察值。一般的异常值会明显大于或小于其他值,较容易辨认,也有不明显的,则可以通过统计检验方法将其识别并剔除。

- 异常值的识别在这里插入图片描述在这里插入图片描述
异常值常用的处理方法:

面对异常值,最好能具体了解产生这些异常值的背后原因,这可能会发掘到一个能更好地稳定或控制流程性能的机会点。处理异常值一定要基于实际情况来考虑,在做好标记和记录后,可选择下面一些常用的处理方法:

  1. 删除含有异常值的记录;
  2. 使用平均值/众数等统计量进行填充;
  3. 把它看作缺失值,应用缺失值的方法来处理;
  4. 暂时保留,结合模型性能进行分析;
  5. 不予处理。

3. 删除重复值

示例:查看整个数据集重复值的情况,统计重复值的数量及辨析哪些数据是重复值,最后删除重复值。在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值