一文讲清数据清洗的十大常用方法

简介: 本文详解数据清洗十大常用方法与实战技巧,涵盖缺失值填补、重复值处理、异常值检测、数据标准化、文本清洗、数据脱敏等关键操作,帮助你高效解决数据“脏乱差”问题,提升数据质量与分析准确性。

之前写过一篇文章盘点了热门的数据清洗工具,没想到后台收到不少私信追问:“工具有了,具体清洗方法怎么操作?” 这让我意识到,​​​工具只是手段,理解并熟练运用清洗方法才是提升数据质量的关键​​。​所以今天,我就拆解数据清洗的十大常用方法与实战技巧,用通俗语言讲透从缺失值填补到数据脱敏的关键操作,帮你高效解决数据中的缺失、异常、重复、不一致等“脏乱差”问题。

一、结构化缺失值填补

缺失值是比较常见的一个问题,虽然直接删除含有缺失值的记录是一种简单的方法,但这可能导致样本量大幅减少,从而影响分析结果的可靠性。因此,我更推荐根据具体场景选择合适的填补策略:

1. 直接删除

当数据列的缺失比例较低(<5%)且缺失值是随机分布时,可以考虑直接删除这些记录,以避免样本量的大幅减少。

2. 统计量填补

(1)均值填补:适用于正态分布的数据列。通过计算列的平均值来填补缺失值。

(2)中位数填补:对于存在异常值的数据列,中位数是一个更稳健的选择。

(3)众数填补:适用于分类变量。通过选取出现频率最高的值来填补缺失值。

3. 预测填补

当变量之间存在较强的关联性时,可以使用KNN(K近邻)或回归模型基于其他特征预测缺失值。

需要注意的是在使用均值填补时,需要避免盲目操作。如果缺失值是非随机的,应先分析其缺失机制。以下是使用Pandas进行填补的代码示例:

二、重复值处理

重复记录会导致资源浪费,并可能引入分析偏差。处理重复值的方法包括:

1. 完全重复

使用`df.drop_duplicates()`直接删除完全相同的行。

2. 关键字段重复

根据业务逻辑,保留最新记录。例如,在用户数据中,保留`last_login_time`最大的记录。

3. 聚合处理

对于部分重复的数值字段,可以通过取均值等方式进行处理。例如,同一用户多次交易记录可以取交易金额的均值。

三、异常值检测

异常值的检测和处理是数据清洗中的重要环节。常见的方法包括:

1. 统计学方法

(1)Z-score法:适用于正态分布的数据。当`|Z| > 3`时,可视为异常值。Z-score的计算公式为:

(2)IQR箱线图法:通过计算四分位数(Q1和Q3),并确定异常值范围为`[Q1 - 1.5IQR, Q3 + 1.5IQR]`。这种方法更为稳健,适用于非正态分布的数据。

2. 业务规则法

根据业务逻辑设定硬性边界。例如,年龄大于150的记录可以视为无效值。但在真实场景中,数据情况往往会更错综复杂,可以使用工具来帮助简化数据处理流程,我平时工作中用的比较省时省力的工具是FineDataLink(FDL)。FDL是一款专门做数据集成的低代码工具,可以接入并整合各种类型的数据,集中进行管理。它不仅提供了数据清理和数据分析的功能,还能够将清理后的数据快速应用到其他应用程序中。此外,它还支持高级数据处理功能,例如数据转换、数据过滤、数据重构、数据集合等。

四、数据标准化/归一化

为了使不同尺度的特征能够公平比较,使用数据标准化和归一化消除量纲是必要的步骤:

1. Min-Max归一化

将数据压缩到[0,1]区间,公式为:

2. Z-score标准化

使数据服从均值为0、标准差为1的正态分布,公式为:

该方法适用于聚类、PCA等算法。

3. 注意事项

随机森林等树模型通常不需要归一化,因为它们对特征的尺度不敏感。

五、数据离散化

将连续变量转化为分类变量,可以提升模型的鲁棒性。常见的离散化方法包括:

六、文本数据清洗

非结构化文本数据需要特殊处理,常见的清洗方法包括:

七、数据类型转换

数据类型转换是确保数据能够正确用于分析的基础。常见的转换方法包括:

1. 日期字符串转datetime对象

日期数据通常是以字符串的形式存储的,比如“2025-01-01”。这种字符串形式的日期数据在进行日期相关的计算时会很不方便,需要把日期字符串转换成datetime对象,可以使用pd.to_datetime(df['date_str'])来完成这个转换。

2. 数值存储为文本

如果数值被错误地存储为文本,比如金额字段,可以通过`astype('float')`将存储为文本的数值强制转换为浮点数。

3. 布尔值映射

把“是/否”这样的文本布尔值映射为1/0,方便模型处理。

八、数据一致性处理

数据一致性是确保分析结果准确的关键。常见的处理方法包括:

1. 规则引擎

例如,校验订单状态与金额的逻辑一致性:

2. 跨表验证

验证不同表之间的逻辑关系。比如,用户注册日期应早于首次购买日期。

3. 枚举值检查

确保字段值符合预定义的枚举值。例如,性别只能是{‘男’,‘女’,‘其他’}。

九、特征工程优化

特征工程是数据清洗的高级形态,清洗与特征创造通常同步进行:

1. 派生特征

从现有字段中提取新特征。比如,通过日期字段提取“是否周末”。

2. 交互特征

计算两个特征的组合关系。比如,销售额除以用户数,得到人均消费。

3. 维度压缩

用降维技术(如PCA)将多个相关特征压缩为少数几个因子,减少特征数量。

十、数据脱敏

数据脱敏是保护隐私的重要环节,常见的方法包括:

1. 字段脱敏

对敏感字段进行部分隐藏。比如,身份证号码保留前6位,手机号中间4位打码。

2. 差分隐私

在数据中添加可控噪声,保护个体信息。

3. K-匿名化

确保每条记录在关键字段上无法被唯一识别,防止隐私泄露。

总结

在实际应用中,选择合适的数据清洗方法需要综合考虑以下三个维度:

1. 数据性质维度

(1)结构化数据:侧重重复值、异常值处理。

(2)文本数据:优先处理编码问题和停用词。

2. 业务场景维度

(1)风控模型:严格处理异常值和逻辑矛盾。

(2)用户画像:重视离散化和特征工程。

3. 算法需求维度

(1)线性模型:必须进行标准化处理。

(2)深度学习:需处理缺失值以防止NaN扩散。

数据清洗是一个复杂且耗时的过程,​需要根据数据的具体情况和业务需求选择合适的清洗方法。​同时,数据清洗也是一个反复的过程,需要不断地检查和修正数据中的问题。建议从单点突破开始,逐步构建自动化清洗流水线。在实践中,​重点关注清洗前后的指标变化​,如缺失率、唯一值占比等。通过持续优化清洗规则,确保数据质量的可控性。

相关文章
|
8天前
|
人工智能 运维 安全
|
6天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
661 23
|
7天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
13天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1071 110
人工智能 数据可视化 数据挖掘
239 0