之前写过一篇文章盘点了热门的数据清洗工具,没想到后台收到不少私信追问:“工具有了,具体清洗方法怎么操作?” 这让我意识到,工具只是手段,理解并熟练运用清洗方法才是提升数据质量的关键。所以今天,我就拆解数据清洗的十大常用方法与实战技巧,用通俗语言讲透从缺失值填补到数据脱敏的关键操作,帮你高效解决数据中的缺失、异常、重复、不一致等“脏乱差”问题。
一、结构化缺失值填补
缺失值是比较常见的一个问题,虽然直接删除含有缺失值的记录是一种简单的方法,但这可能导致样本量大幅减少,从而影响分析结果的可靠性。因此,我更推荐根据具体场景选择合适的填补策略:
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扩散。
数据清洗是一个复杂且耗时的过程,需要根据数据的具体情况和业务需求选择合适的清洗方法。同时,数据清洗也是一个反复的过程,需要不断地检查和修正数据中的问题。建议从单点突破开始,逐步构建自动化清洗流水线。在实践中,重点关注清洗前后的指标变化,如缺失率、唯一值占比等。通过持续优化清洗规则,确保数据质量的可控性。