数据清洗

为什么进行数据清洗?

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

缺失值的观察与处理

查看缺失值

方法一:()

深度学习如何清洗数据 如何进行数据清洗处理_深度学习如何清洗数据

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

深度学习如何清洗数据 如何进行数据清洗处理_数据挖掘_02

查找缺失值

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

深度学习如何清洗数据 如何进行数据清洗处理_人工智能_03

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()]

深度学习如何清洗数据 如何进行数据清洗处理_数据分析_04

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

深度学习如何清洗数据 如何进行数据清洗处理_缺失值_05

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

特征处理

对连续型进行离散化处理

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

深度学习如何清洗数据 如何进行数据清洗处理_缺失值_06

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

深度学习如何清洗数据 如何进行数据清洗处理_人工智能_07

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

深度学习如何清洗数据 如何进行数据清洗处理_缺失值_08

对文本型变量进行转换

方法一:replace

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

深度学习如何清洗数据 如何进行数据清洗处理_数据挖掘_09

方法二:map

  • df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})
  • 深度学习如何清洗数据 如何进行数据清洗处理_数据分析_10


方法三:使用sklearn.preprocessing的LabelEncoder

深度学习如何清洗数据 如何进行数据清洗处理_缺失值_11

使用onehot编码

深度学习如何清洗数据 如何进行数据清洗处理_缺失值_12

利用正则编码提取信息

深度学习如何清洗数据 如何进行数据清洗处理_数据挖掘_13