郭震 AI公众号:郭震AI

8 数据预处理之数据清洗

发布日期:

最近更新:

分类: 机器学习小白

预计阅读: 3 分钟

阅读次数: 0

系列进度

机器学习入门 · 第 8 / 21

预计阅读3 分钟
结构重点8 个
图文要点6 张
正文规模1.2k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 8 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

数据清洗流程图查看大图
数据清洗流程图

数据清洗决定模型下限。缺失值、重复样本、异常值和单位不一致,会让模型学到错误规律,后面再调参数也很难补救。

预处理步骤可对照 scikit-learn 数据预处理文档

数据清洗核对图查看大图
数据清洗核对图

我会在清洗前后各保存一份统计表:行数、缺失比例、重复比例、异常样本数量。没有对比,就不知道清洗是否过度。

在机器学习的工作流程中,数据预处理是一个至关重要的步骤。特别是在与数据收集之后的“数据清洗”阶段,我们需要确保我们的数据集是高质量的,以便模型能够学习到有效的信息。在本篇教程中,我们将详细探讨数据清洗的关键步骤与技巧,并结合具体的案例与代码示例,使其更易于理解。

数据清洗的重要性

在数据预处理流程中,数据清洗的目的是去除或修复数据集中的不准确、错误或不完整的数据。数据质量好坏直接影响到模型的表现,数据清洗的过程不仅可以提高数据质量,还能帮助我们在后续的特征选择与工程中更加顺利。

数据清洗的步骤

数据清洗通常包括以下几个步骤:

  1. 处理缺失值
  2. 去除重复数据
  3. 纠正数据类型
  4. 处理异常值
  5. 标准化数据

接下来,我们将逐一探讨这些步骤并结合案例进行说明。

1. 处理缺失值

缺失值是数据集中常见的问题。对于缺失值的处理,我们可以采取以下几种策略:

  • 删除缺失值:适用于缺失比例很小的情况。
  • 填补缺失值:可以使用均值、中位数、众数或进行插值等方法来填补。

示例代码:

import pandas as pd

# 假设我们有如下数据集
data = {
    '年龄': [25, 30, None, 35, 40],
    '收入': [50000, 60000, 65000, None, 80000]
}

df = pd.DataFrame(data)

# 查看缺失值
print("缺失值统计:\n", df.isnull().sum())

# 填补缺失值(使用均值)
df['年龄'].fillna(df['年龄'].mean(), inplace=True)
df['收入'].fillna(df['收入'].mean(), inplace=True)

print("填补缺失值后:\n", df)

2. 去除重复数据

数据集中有时候会包含完全相同的记录,这会导致模型训练过程中对某些样本的过拟合。

示例代码:

# 创建一个包含重复数据的示例数据集
data_with_duplicates = {
    '姓名': ['张三', '李四', '张三', '王五'],
    '年龄': [25, 30, 25, 28]
}

df_duplicates = pd.DataFrame(data_with_duplicates)

# 查看重复行
print("重复行统计:\n", df_duplicates.duplicated().sum())

# 去除重复行
df_duplicates.drop_duplicates(inplace=True)

print("去重后的数据集:\n", df_duplicates)

3. 纠正数据类型

数据类型的不一致会影响数据的操作与分析。比如,一列存储日期的字段最好转换为日期格式,以便后续的时间序列分析。

机器学习数据清洗判断卡查看大图
机器学习数据清洗判断卡

做机器学习数据清洗时,先检查缺失值、重复样本、异常点、格式错误和标签噪声。

示例代码:

# 处理包含日期的示例数据集
data_with_dates = {
    '购买日期': ['2021-01-01', '2021-02-01', '2021-03-01'],
    '金额': [100, 150, 200]
}

df_dates = pd.DataFrame(data_with_dates)

# 转换购买日期列
df_dates['购买日期'] = pd.to_datetime(df_dates['购买日期'])

print("数据类型:\n", df_dates.dtypes)

4. 处理异常值

异常值可能严重影响数据分析与模型训练,我们可以使用 Z-score 或 IQR 方法来识别并处理异常值。

示例代码:

# 创建一个示例数据集
data_with_outliers = {
    '收入': [50000, 60000, 70000, 85000, 100000, 500000]  # 500000是异常值
}

df_outliers = pd.DataFrame(data_with_outliers)

# 计算 IQR
Q1 = df_outliers['收入'].quantile(0.25)
Q3 = df_outliers['收入'].quantile(0.75)
IQR = Q3 - Q1

# 识别出异常值的条件
outlier_condition = (df_outliers['收入'] < (Q1 - 1.5 * IQR)) | (df_outliers['收入'] > (Q3 + 1.5 * IQR))

# 去除异常值
df_outliers_cleaned = df_outliers[~outlier_condition]

print("处理后不包含异常值的数据集:\n", df_outliers_cleaned)

5. 标准化数据

标准化是将数据的分布调整到一个标准范围,通常是均值为 0,标准差为 1,常用于特征工程中。

机器学习阅读地图卡查看大图
机器学习阅读地图卡

读完《数据预处理之数据清洗》后,可以回头问三件事:它解决什么问题,哪一步最容易出错,自己能否拿一个小例子跑通。

示例代码:

from sklearn.preprocessing import StandardScaler

# 创建一个示例数据集
data_for_scaling = {
    '特征1': [1, 2, 3, 4, 5],
    '特征2': [10, 20, 30, 40, 50]
}

df_scaling = pd.DataFrame(data_for_scaling)

# 标准化
scaler = StandardScaler()
scaled_data = scaler.fit_transform(df_scaling)

print("标准化后的数据:\n", scaled_data)
数据预处理之数据清洗应用复盘卡查看大图
数据预处理之数据清洗应用复盘卡

读到这里,可以把《数据预处理之数据清洗》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

数据预处理之数据清洗应用检查卡查看大图
数据预处理之数据清洗应用检查卡

读完《数据预处理之数据清洗》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

小结

数据清洗是确保机器学习模型能够有效学习的前提。通过上述步骤,我们能够对数据集进行细致入微的检查与调整,使数据集更加整洁与有效。接下来,在学习数据预处理的下一步“特征选择与工程”时,将能够更好地利用我们清洗后的数据集。

希望本篇教程能够帮助你在数据清洗的过程中,加深对该领域的理解。如有问题或者进一步的讨论,欢迎留言!

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

数据预处理之数据清洗适合谁读?

这是 机器学习入门 系列第 8 / 21 篇,适合正在学习机器学习入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇机器学习入门教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...