Datawhale动手数据分析第二章第一节

昊萌 Lv2

Datawhale动手数据分析第二章第一节

学习资料:https://github.com/datawhalechina/hands-on-data-analysis

本文列举了简单的数据清洗方法,包含以下几部分:

  • 缺失值,重复值,异常值观察和处理
  • 连续变量分桶
  • 离散变量编码

数据清洗

缺失值

缺失值观察

  • df.info() :查看数据框中每列的数据类型和非空值的数量。
  • df.isnull().sum() :计算每列的缺失值数量。

对缺失值进行处理

直接删除:缺失值的行或列不多,可以直接删除包含缺失值的行或列。

dropna 方法用于删除包含缺失值的行或列。

参数:

  • axis :0 或 1,默认为 0。0 表示行,1 表示列。
  • how :’all’ 或 ‘any’,默认为 ‘any’。’all’ 表示只有当行或列的所有值都是 NaN 时才删除,’any’ 表示只要行或列中有一个值是 NaN 就删除。
  • thresh :int,可选。指定需要保留的非 NA/null 值的最小数量。
  • subset :列标签的列表,可选。表示要考虑其 NaN 值的列的子集。
  • inplace :bool,默认为 False。如果为 True,则在原始 DataFrame 上进行修改,否则返回新的 DataFrame。

填充缺失值

  • 用统计量填充:平均数、中位数、众数等。
  • 用特定值填充,如 0 或 ‘unknown’。
  • 向前填充(ffill)或向后填充(bfill),适用于时间序列数据。
1
df.fillna(value, method='ffill', axis=0, inplace=False)

重复值

观察重复值

1
2
df.duplicated()     # 返回每一行是否重复的布尔值
df.duplicated().sum() # 统计重复值的数量

处理重复值

1
df.drop_duplicates(subset=None, keep='first', inplace=False)

参数:

  • subset :列标签或列标签列表,可选。仅考虑某些列来识别重复项。
  • keep :’first’、’last’ 或 False。’first’ 保留第一次出现的重复项,’last’ 保留最后一次出现的重复项,False 删除所有重复项。

异常值

观察异常值

  • 通过 describe() 查看统计特征,发现可能的异常值。
  • 使用箱线图、散点图等可视化手段识别异常值。

处理异常值

  • 直接删除:直接删除包含异常值的行。
  • 视为缺失值:将异常值替换为 NaN,再使用缺失值处理方法。
  • 盖帽法:用 1% 和 99% 分位数替代异常值。
  • 分箱离散化:将连续变量分成多个区间,减少异常值的影响。

连续变量分桶

连续变量分桶是指将连续的数值型变量转换为离散的类别变量。

1
2
pd.cut(x, bins, labels=None)
pd.qcut(x, q, labels=None) # 基于分位数的离散化

离散变量编码

将分类变量转换为数值型变量,以便机器学习模型处理:

  • Label Encoding:将每个类别映射为一个整数。
  • One-Hot Encoding:为每个类别创建一个二进制列。
1
pd.get_dummies(df, columns=['col_name'])
  • 标题: Datawhale动手数据分析第二章第一节
  • 作者: 昊萌
  • 创建于 : 2024-03-14 21:27:03
  • 更新于 : 2026-07-05 23:14:24
  • 链接: https://zilongtian.github.io/2024/03/14/Datawhale动手数据分析第二章第一节/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
Datawhale动手数据分析第二章第一节