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

oa.house365.com 📅 2025-07-10 04:28:16 ✍️ admin 👁️ 5179 ❤️ 783
一文讲清数据清洗的十大常用方法

目录

一、结构化缺失值填补

1. 直接删除

2. 统计量填补

3. 预测填补

二、重复值处理

1. 完全重复

2. 关键字段重复

3. 聚合处理

三、异常值检测

1. 统计学方法

2. 业务规则法

四、数据标准化/归一化

1. Min-Max归一化

2. Z-score标准化

3. 注意事项

五、数据离散化

六、文本数据清洗

七、数据类型转换

1. 日期字符串转datetime对象

2. 数值存储为文本

3. 布尔值映射

八、数据一致性处理

1. 规则引擎

2. 跨表验证

3. 枚举值检查

九、特征工程优化

1. 派生特征

2. 交互特征

3. 维度压缩

十、数据脱敏

1. 字段脱敏

2. 差分隐私

3. K-匿名化

总结

1. 数据性质维度

2. 业务场景维度

3. 算法需求维度

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

一、结构化缺失值填补

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

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是一款专门做数据集成的低代码工具,可以接入并整合各种类型的数据,集中进行管理。它不仅提供了数据清理和数据分析的功能,还能够将清理后的数据快速应用到其他应用程序中。此外,它还支持高级数据处理功能,例如数据转换、数据过滤、数据重构、数据集合等。它的使用地址我就放在下面了,大家可以点开链接自己动手体验一下:免费体验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扩散。

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

相关推荐

《神武4》帮派建设攻略 神武帮派管理手册
大熊猫香烟价格表图
识别手机型号的 10 个有效方法