目 录CONTENT

文章目录

5个用于自动化数据清洗的实用Python脚本

Administrator
2026-01-10 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://www.kdnuggets.com/5-useful-python-scripts-to-automate-data-cleaning

原文作者:Bala Priya C


Useful Python Scripts to Automate Data Cleaning
Image by Editor

 

# 引言

 
作为一名数据专业人士,您深知机器学习模型、分析仪表板和业务报告都依赖于准确、一致且格式正确的数据。但一个令人不安的事实是:数据清洗占据了项目时间的巨大一部分。数据科学家和分析师花费了大量时间清理和准备数据,而不是真正进行分析。

您获得的原始数据是杂乱无章的。它在各处散落着缺失值、重复记录、不一致的格式、会使模型产生偏差的异常值,以及充满拼写错误和不一致性的文本字段。手动清洗这些数据既繁琐、容易出错,也无法扩展。

本文将介绍五个Python脚本,它们专门用于自动化您在实际项目中经常遇到的最常见且最耗时的五项数据清洗任务。

🔗 在GitHub上查看代码链接

 

# 1. 缺失值处理程序

 
痛点:您的数据集中到处都是缺失值——有些列有90%的数据是完整的,而其他列的数据非常稀疏。您需要决定如何处理每一列:删除行、用均值填充、对时间序列使用前向填充,或应用更复杂的插补方法。为每一列手动执行此操作既乏味又不一致。

脚本功能:自动分析整个数据集中缺失值的模式,根据数据类型和缺失模式推荐适当的处理策略,并应用所选的插补方法。生成一份详细报告,说明哪些数据缺失以及如何处理。

工作原理:脚本扫描所有列以计算缺失百分比和模式,确定数据类型(数值型、分类型、日期时间型),并应用适当的策略:

  • 数值数据使用均值/中位数
  • 分类数据使用众数
  • 时间序列使用插值法

它可以区别处理完全随机缺失(MCAR)、随机缺失(MAR)和非随机缺失(MNAR)的模式,并记录所有更改以确保可重现性。

获取缺失值处理脚本

 

# 2. 重复记录检测与解决

 
痛点:您的数据中存在重复项,但它们不总是完全相同的匹配。有时是同一个人但姓名拼写略有不同,或者同一笔交易被记录了两次但存在细微差异。发现这些模糊的重复项并决定保留哪条记录需要手动检查数千行数据。

脚本功能:使用可配置的匹配规则识别完全重复和模糊重复的记录。将相似记录分组,计算它们的相似度分数,然后根据您定义的生存规则(如保留最新的、保留最完整的)自动标记或合并记录。

工作原理:脚本首先使用基于哈希的比较快速查找完全重复项。然后,它使用使用Levenshtein 距离Jaro-Winkler 距离的关键字段模糊匹配算法来查找近似重复项。记录被聚类成重复组,合并时由生存规则决定保留哪些值。详细报告会显示所有找到的重复组以及采取的措施。

获取重复记录检测脚本

 

# 3. 数据类型修复与标准化程序

 
痛点:CSV导入将所有内容都变成了字符串。日期有五种不同的格式。数字带有货币符号和千位分隔符。布尔值在同一列中用“Yes/No”、“Y/N”、“1/0”和“True/False”表示。要获得一致的数据类型,需要为每个混乱的列编写自定义解析逻辑。

脚本功能:自动检测每列的预期数据类型,标准化格式,并将所有内容转换为正确的类型。它可以处理多种格式的日期,清理数字字符串,规范化布尔值表示,并验证结果。提供一个转换报告,显示所做的更改。

工作原理:脚本通过模式匹配和启发式方法对每列进行抽样以推断预期类型。然后应用适当的解析:使用dateutil进行灵活的日期解析,使用正则表达式进行数值提取,使用映射字典进行布尔值规范化。转换失败的记录会记录下来,以便手动审查有问题的原始值。

获取数据类型修复脚本

 

# 4. 异常值检测器

 
痛点:您的数值数据中存在会破坏分析的异常值。有些是数据录入错误,有些是您希望保留的合法极端值,有些则模棱两可。您需要识别它们,了解它们的影响,并决定如何处理每种情况——进行温索化(Winsorization)、封顶、删除或标记以供复审。

脚本功能:使用多种统计方法(如IQR、Z-score、Isolation Forest)检测异常值,可视化其分布和影响,并应用可配置的处理策略。区分单变量和多变量异常值。生成报告,显示异常值计数、它们的值以及如何处理它们。

工作原理:脚本使用您选择的方法计算异常值边界,标记超出阈值的数值,并应用处理方法:删除、按百分位数封顶、温索化或用边界值插补。对于多变量异常值,它使用 Isolation Forest 或马氏距离。所有异常值都记录了其原始值,以便进行审计。

获取异常值检测脚本

 

# 5. 文本数据清洗和规范化程序

 
痛点:您的文本字段一团糟。姓名的大小写不一致,地址使用不同的缩写(St. vs Street vs ST),产品描述中包含HTML标签和特殊字符,自由文本字段到处都是前导/尾随空格。标准化文本数据需要对数十个正则表达式和字符串操作进行一致的应用。

脚本功能:自动清洗和规范化文本数据:标准化大小写、删除不需要的字符、扩展或标准化缩写、剥离HTML、规范化空格,并处理Unicode问题。可配置的清洗管道允许您对不同类型的列(姓名、地址、描述等)应用不同的规则。

工作原理:脚本提供了一系列文本转换步骤,可以按列类型进行配置。它处理大小写规范化、空格清理、特殊字符删除、使用查找字典进行缩写标准化以及Unicode规范化。每个转换都会被记录,并提供转换前后的样本以供验证。

获取文本清洗脚本

 

# 结论

 
这五个脚本解决了您在实际项目中将面临的最耗时的数据清洗挑战。快速回顾一下:

  • 缺失值处理程序智能地分析并插补缺失数据
  • 重复记录检测器查找精确和模糊的重复项并解决它们
  • 数据类型修复程序标准化格式并转换为正确的类型
  • 异常值检测器识别并处理统计异常
  • 文本清洗器一致地规范混乱的字符串数据

每个脚本都是模块化的。因此,您可以单独使用它们,也可以将它们链接在一起形成一个完整的数据清洗管道。从解决您最大痛点的脚本开始,在数据样本上进行测试,根据您的特定用例自定义参数,然后逐步构建您的自动化清洗工作流程。

祝您数据清洗愉快!
 
 

Bala Priya C 是来自印度的开发人员和技术作家。她喜欢在数学、编程、数据科学和内容创作的交叉点工作。她的兴趣和专业领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和咖啡!目前,她正致力于通过撰写教程、操作指南、观点文章等方式学习并与开发者社区分享她的知识。Bala还创建引人入胜的资源概述和编码教程。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区