动手学数据分析task02:数据清洗及特征处理

数据清洗

为什么进行数据清洗?

  • 我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗

缺失值的观察与处理

查看缺失值

方法一:df.info()

在这里插入图片描述

方法二:df.isnull().sum()

在这里插入图片描述

查找缺失值

  • 有none、nan、isnull三种方法,具体效果如图所示
  • 对于数值型:nan和isnull是相同效果;对于非数值型:nan并不起作用,只可以用isnull查找

在这里插入图片描述

dropna()函数

  • axis:axis=0: 删除包含缺失值的行axis=1: 删除包含缺失值的列
  • how: 与axis配合使用 how=‘any’ :只要有缺失值出现,就删除该行或列 how=‘all’: 所有的值都缺失,才删除行或列
  • thresh:axis中至少有thresh个非缺失值,否则删除 比如axis=0,thresh=10:标识如果该行中非缺失值的数量小于10,将删除改行
  • subset: list 在哪些列中查看是否有缺失值
  • inplace: 是否在原数据上操作。如果为真,返回None否则返回新的copy,去掉了缺失值。

fillna()函数

  • value: scalar, dict, Series, or DataFrame
  • dict: 可以指定每一行或列用什么值填充
  • method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}
  • default None在列上操作
  • ffill / pad: 使用前一个值来填充缺失值
  • backfill / bfill :使用后一个值来填充缺失值
  • limit 填充的缺失值个数限制

重复值的观察与处理

重复值的观察 df[df.duplicated()]

在这里插入图片描述

重复值的处理 df = df.drop_duplicates()

在这里插入图片描述

  • 在对一些数值型属性进行判空处理后,填充0就可以进行重复值处理

特征处理

对连续型进行离散化处理

  • 首先,使用describe()查看min和max

在这里插入图片描述

  • 对于age属性进行平均划分,5代表分为五份;df[‘AgeBand’]代表新生成一个列;labels代表新属性列的取值

在这里插入图片描述

  • 对于连续取值,不想均匀划分怎么办?
  • 比如按照(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
    在这里插入图片描述
  • 另一种,按比例划分;按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示

在这里插入图片描述

对文本型变量进行转换

方法一:replace

  • df[‘Sex_num’] = df[‘Sex’].replace([‘male’,‘female’],[1,2])

在这里插入图片描述

方法二:map

  • df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})
    在这里插入图片描述

方法三:使用sklearn.preprocessing的LabelEncoder

在这里插入图片描述

使用onehot编码

在这里插入图片描述

利用正则编码提取信息

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值