数据预处理实战:5种数据清洗与规范化方法对比,Z-Score vs Min-Max
数据预处理实战5种数据清洗与规范化方法深度解析刚接触数据科学的新手常会遇到这样的困境手头有一堆杂乱无章的原始数据却不知如何下手处理。数据预处理作为数据挖掘流程中的关键环节往往决定了后续分析的成败。本文将聚焦五种最实用的数据清洗与规范化技术通过Python代码示例和真实场景对比带你掌握数据预处理的精髓。1. 数据预处理的基石作用数据预处理如同烹饪前的食材准备阶段——再精湛的厨艺也无法挽救劣质的原料。根据行业调研数据科学家80%的时间都花在数据清洗和准备上。原始数据中常见的脏数据问题包括缺失值某电商数据集30%的用户年龄字段为空噪声数据传感器采集的温度值中出现±50℃的异常波动不一致格式日期字段混用2023-01-01和01/01/2023两种格式量纲差异某数据集同时包含万元和元单位的金额import pandas as pd import numpy as np # 创建包含典型问题的示例数据集 data { 年龄: [25, np.nan, 35, 120, 28], 消费金额(元): [5000, 1.2万, 8000, 3500, 9000], 注册日期: [2023-01-01, 01/15/2023, 2023-02-20, 03/01/2023, 2023-04-05] } df pd.DataFrame(data)关键认知高质量的数据预处理能够提升模型准确率30%-50%其价值远高于单纯优化算法参数。2. 数据清洗核心方法2.1 缺失值处理三板斧面对缺失值我们有三种主流处理策略删除法直接移除含缺失值的记录适合缺失比例5%的情况df.dropna()会损失30%的数据量填充法用统计量或预测值填补均值/中位数填充df[年龄].fillna(df[年龄].median(), inplaceTrue)模型预测填充使用KNN或随机森林预测缺失值标记法将缺失作为一种特殊状态新增缺失标识列df[年龄_缺失] df[年龄].isnull().astype(int)# 缺失值处理代码示例 print(原始数据缺失情况) print(df.isnull().sum()) # 方案1删除缺失值 df_drop df.dropna() print(f删除后数据量{len(df_drop)}/{len(df)}) # 方案2中位数填充 median_age df[年龄].median() df_fill df.copy() df_fill[年龄].fillna(median_age, inplaceTrue) # 方案3标记填充 df_marker df.copy() df_marker[年龄_缺失] df_marker[年龄].isnull().astype(int) df_marker[年龄].fillna(median_age, inplaceTrue)2.2 异常值检测与处理异常值如同数据中的刺点会严重扭曲分析结果。常用检测方法包括方法原理适用场景Python实现Z-Score计算数据点与均值的标准差距离正态分布数据scipy.stats.zscoreIQR基于四分位距识别离群点非正态分布pd.DataFrame.quantile可视化箱线图、散点图直观观察初步探索seaborn.boxplotfrom scipy import stats # Z-Score方法检测 z_scores stats.zscore(df[年龄].dropna()) abs_z_scores np.abs(z_scores) outliers (abs_z_scores 3).sum() print(fZ-Score检测到{outliers}个异常值) # IQR方法处理 Q1 df[年龄].quantile(0.25) Q3 df[年龄].quantile(0.75) IQR Q3 - Q1 df_clean df[(df[年龄] Q1 - 1.5*IQR) (df[年龄] Q3 1.5*IQR)]3. 数据规范化技术对比当特征量纲差异大时如年龄vs收入直接计算距离会导致量纲大的特征主导结果。以下是五种主流规范化方法3.1 Min-Max规范化将数据线性变换到[0,1]区间 $$ X_{\text{norm}} \frac{X - X_{\min}}{X_{\max} - X_{\min}} $$特点保持原始数据分布对异常值敏感适合图像处理等需要固定区间的场景from sklearn.preprocessing import MinMaxScaler scaler MinMaxScaler() df[年龄_minmax] scaler.fit_transform(df[[年龄]]) print(df[[年龄, 年龄_minmax]].head())3.2 Z-Score标准化基于均值μ和标准差σ的转换 $$ Z \frac{X - μ}{σ} $$特点处理后均值为0标准差为1适合大多数机器学习算法假设数据近似正态分布from sklearn.preprocessing import StandardScaler scaler StandardScaler() df[年龄_zscore] scaler.fit_transform(df[[年龄]]) print(f均值{df[年龄_zscore].mean():.2f}, 标准差{df[年龄_zscore].std():.2f})3.3 小数定标法通过移动小数点实现规范化 $$ X_{\text{norm}} \frac{X}{10^k} $$其中k是使最大绝对值1的最小整数。特点计算简单保持数据正负关系金融领域常用def decimal_scaling(series): max_val series.abs().max() k np.ceil(np.log10(max_val)) return series / (10 ** k) df[年龄_decimal] decimal_scaling(df[年龄]) print(df[[年龄, 年龄_decimal]].head())3.4 对数变换使用自然对数或10为底的对数 $$ X_{\text{norm}} \log(X) $$特点处理右偏分布压缩大值范围适合收入等长尾数据df[年龄_log] np.log1p(df[年龄]) # log(1x)避免0值 print(df[[年龄, 年龄_log]].head())3.5 鲁棒标准化基于中位数和四分位距 $$ X_{\text{norm}} \frac{X - \text{median}}{IQR} $$特点对异常值不敏感适合含离群点的数据金融风控常用from sklearn.preprocessing import RobustScaler scaler RobustScaler() df[年龄_robust] scaler.fit_transform(df[[年龄]]) print(df[[年龄, 年龄_robust]].head())4. 方法对比与选型指南通过对比实验揭示各方法特性# 生成含异常值的测试数据 np.random.seed(42) normal_data np.random.normal(50, 10, 1000) outlier_data np.array([200, -100]) test_data np.concatenate([normal_data, outlier_data]) # 应用不同规范化方法 methods { 原始数据: test_data, MinMax: MinMaxScaler().fit_transform(test_data.reshape(-1,1)).flatten(), Z-Score: StandardScaler().fit_transform(test_data.reshape(-1,1)).flatten(), 鲁棒标准化: RobustScaler().fit_transform(test_data.reshape(-1,1)).flatten() } # 可视化对比 plt.figure(figsize(12,6)) for i, (name, data) in enumerate(methods.items(), 1): plt.subplot(2,2,i) sns.boxplot(datadata) plt.title(name) plt.tight_layout()选型决策矩阵场景特征推荐方法理由数据分布近似正态Z-Score符合方法假设前提存在极端异常值鲁棒标准化对离群点不敏感需要固定输出范围Min-Max结果严格限定在[0,1]区间金融货币数据小数定标符合行业惯例长尾分布数据对数变换压缩大值范围5. 实战电商用户数据预处理综合应用上述技术处理真实场景数据# 1. 数据加载与探索 url https://raw.githubusercontent.com/justmarkham/DAT8/master/data/u.user users pd.read_csv(url, sep|, encodinglatin1) # 2. 处理缺失值 users[age].fillna(users[age].median(), inplaceTrue) # 3. 异常值处理 Q1 users[age].quantile(0.25) Q3 users[age].quantile(0.75) IQR Q3 - Q1 users users[(users[age] Q1-1.5*IQR) (users[age] Q31.5*IQR)] # 4. 规范化处理 scaler StandardScaler() users[age_zscore] scaler.fit_transform(users[[age]]) # 5. 类别型变量编码 users pd.get_dummies(users, columns[occupation, gender]) # 6. 保存预处理结果 users.to_csv(processed_users.csv, indexFalse)经验分享在实际项目中建议构建可复用的预处理管道Pipeline将清洗、转换、规范化步骤封装为标准化流程。sklearn的Pipeline和ColumnTransformer能大幅提升代码可维护性。数据预处理既是科学也是艺术——需要严谨的方法论也需要根据业务场景灵活调整。掌握这些核心技术后你会发现原来杂乱无章的数据开始变得驯服为后续的建模分析打下坚实基础。

相关新闻

Python 数据分析实战:基于 2019 国赛 D 题数据,5 步完成空气质量传感器校准

Python 数据分析实战:基于 2019 国赛 D 题数据,5 步完成空气质量传感器校准

Python 数据分析实战:基于 2019 国赛 D 题数据,5 步完成空气质量传感器校准空气质量监测数据的准确性直接影响环境治理决策的科学性。当我们在实际项目中遇到微型传感器数据漂移问题时,传统 MATLAB 数学建模方案往往难以快速落地。本文将用 P…

2026/7/8 22:54:31阅读更多 →
RSSI 多边定位误差分析:3 种锚节点布局对定位精度的影响对比

RSSI 多边定位误差分析:3 种锚节点布局对定位精度的影响对比

RSSI多边定位精度优化:锚节点布局策略的数学建模与Python实战在室内定位和物联网应用中,基于RSSI(接收信号强度指示)的定位技术因其低成本、低功耗特性而备受青睐。然而,实际部署中工程师们常面临一个关键难题&#xf…

2026/7/8 22:54:31阅读更多 →
AutoDock Vina 1.2.3 分子对接实战:CPU 16线程配置与 Python 脚本调用

AutoDock Vina 1.2.3 分子对接实战:CPU 16线程配置与 Python 脚本调用

AutoDock Vina 1.2.3 分子对接实战:CPU 16线程配置与 Python 脚本调用 分子对接技术已经成为现代药物发现和生物分子相互作用研究的重要工具。AutoDock Vina 作为一款开源的分子对接软件,凭借其高效的算法和友好的使用体验,在科研领域获得了广…

2026/7/8 22:54:31阅读更多 →
XWayland 24.1.13 发布:修复两大安全漏洞,还有多项小清理修复工作!

XWayland 24.1.13 发布:修复两大安全漏洞,还有多项小清理修复工作!

XWayland 24.1.13 现已发布,此次更新修复了两个安全漏洞,并进行了多项小的清理修复工作。安全漏洞修复本次更新修复了 CVE-2026-55999 和 CVE-2026-56000 两个安全漏洞,分别是 glamor Font Atlas Heap Buffer Overflow 和 CommonMakeCurrent(…

2026/7/9 0:14:37阅读更多 →
3分钟掌握音乐文件解锁技巧:让加密音频重获自由播放权

3分钟掌握音乐文件解锁技巧:让加密音频重获自由播放权

3分钟掌握音乐文件解锁技巧:让加密音频重获自由播放权 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https…

2026/7/9 0:14:37阅读更多 →
推理服务的 GPU 资源池化管理:基于 CUDA MPS 的多模型混部与隔离策略

推理服务的 GPU 资源池化管理:基于 CUDA MPS 的多模型混部与隔离策略

推理服务的 GPU 资源池化管理:基于 CUDA MPS 的多模型混部与隔离策略 一、三张 A100 跑 5 个模型,GPU 显存碎片导致总有模型加载失败 在一个多模型推理服务的部署中。需要在 3 张 A100(每张 80GB)上部署 5 个模型。模型的显存需求…

2026/7/9 0:14:37阅读更多 →
苹果18硬件升级:本地AI开发与高性能计算实践指南

苹果18硬件升级:本地AI开发与高性能计算实践指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看苹果18系列带来的技术升级,重点不是参数堆砌,而是这些改进对开发者、内容创作者和普通用户的实际…

2026/7/9 0:14:37阅读更多 →
终极指南:如何用LocalVocal为OBS Studio添加本地AI实时字幕

终极指南:如何用LocalVocal为OBS Studio添加本地AI实时字幕

终极指南:如何用LocalVocal为OBS Studio添加本地AI实时字幕 【免费下载链接】obs-localvocal OBS plugin for local speech recognition and captioning using AI 项目地址: https://gitcode.com/gh_mirrors/ob/obs-localvocal 你是否曾为直播或录播内容添加…

2026/7/9 0:14:37阅读更多 →
STM32与CMT-8540S音频模块开发实战

STM32与CMT-8540S音频模块开发实战

1. STM32F107VC与CMT-8540S-SMT的硬件组合解析在嵌入式音频开发领域,STM32F107VC微控制器与CMT-8540S-SMT音频模块的组合堪称黄金搭档。STM32F107VC基于ARM Cortex-M3内核,主频72MHz,内置256KB Flash和64KB SRAM,其丰富的外设接口…

2026/7/9 0:09:37阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
Three.js 着色器光效教程

Three.js 着色器光效教程

着色器光效 Shader Light ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 ShaderMaterial 自…

2026/7/9 0:04:37阅读更多 →
如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南 【免费下载链接】casemove A dedicated desktop app that enables you to move items in and out of storage units in CS2. 项目地址: https://gitcode.com/gh_mirrors/ca/casemove 还在为CS2存储单…

2026/7/9 0:04:37阅读更多 →
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M…

2026/7/9 0:04:37阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →