Datawhale动手数据分析第二章第一节
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 | df.duplicated() # 返回每一行是否重复的布尔值 |
处理重复值:
1 | df.drop_duplicates(subset=None, keep='first', inplace=False) |
参数:
- subset :列标签或列标签列表,可选。仅考虑某些列来识别重复项。
- keep :’first’、’last’ 或 False。’first’ 保留第一次出现的重复项,’last’ 保留最后一次出现的重复项,False 删除所有重复项。
异常值
观察异常值:
- 通过
describe()查看统计特征,发现可能的异常值。 - 使用箱线图、散点图等可视化手段识别异常值。
处理异常值:
- 直接删除:直接删除包含异常值的行。
- 视为缺失值:将异常值替换为 NaN,再使用缺失值处理方法。
- 盖帽法:用 1% 和 99% 分位数替代异常值。
- 分箱离散化:将连续变量分成多个区间,减少异常值的影响。
连续变量分桶
连续变量分桶是指将连续的数值型变量转换为离散的类别变量。
1 | pd.cut(x, bins, 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 进行许可。
评论