【愚公系列】《数据可视化分析与实践》006-数据预处理(数据预处理概述)

💎【行业认证·权威头衔】
✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家
✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主
✔ 技术生态共建先锋:横跨鸿蒙、云计算、AI等前沿领域的技术布道者
🏆【荣誉殿堂】
🎖 连续三年蝉联"华为云十佳博主"(2022-2024)
🎖 双冠加冕CSDN"年度博客之星TOP2"(2022&2023)
🎖 十余个技术社区年度杰出贡献奖得主
📚【知识宝库】
覆盖全栈技术矩阵:
◾ 编程语言:.NET/Java/Python/Go/Node…
◾ 移动生态:HarmonyOS/iOS/Android/小程序
◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙
◾ 游戏开发:Unity3D引擎深度解析
🚀前言
多样的数据源在短时间内为人们提供了海量的数据,但是这些数据非常容易受到噪声、丢失和数据格式不一致的影响。低质量的数据将干扰数据分析与可视化工作。数据科学家和工程师们通过大量的理论与实践,提出了很多数据预处理的技术,这些技术能帮助我们更好地挖掘数据中的知识和信息,本章将介绍这些数据预处理技术。
🚀一、数据预处理概述
在数据分析和挖掘的完整流程中,数据预处理是连接原始数据与有价值洞见之间至关重要、不可或缺的桥梁。它被广泛认为是整个过程中最耗时、最繁重,但也最关键的步骤。未经处理的原始数据往往像未经雕琢的璞玉,其内在价值被各种“杂质”所掩盖。数据预处理的目的,正是通过一系列技术手段,将这些“脏乱”的原始数据转化为高质量、规范化、适用于后续分析的干净数据集。
🔎1.“混乱”的数据
数据的质量直接决定了其满足特定分析或应用需求的能力。高质量的数据应具备准确性、完整性、一致性、时效性和可信性等特征。然而,现实世界中的数据往往远非理想。
设想一个场景:你是一位电商企业的数据分析经理,负责分析公司各区域的销售数据以制定下一季度的营销策略。你从公司的数据库和数据仓库中提取了几个关键属性:商品名称、价格、销售数量、销售日期和客户地区。然而,在初步浏览数据时,你发现了诸多问题:
- 缺失值:部分商品的
价格或销售数量字段为空。 - 异常值:出现了几笔交易,其
销售数量为负值或远超库存的极大值。 - 错误记录:订单中混入了公司从未进货的
商品名称。 - 信息不足:数据库没有记录交易时的
价格是否为促销价格,这使得价格分析变得模糊。 - 不一致性:同一客户的
地区信息在不同订单中记录为“北京”和“北京市”。
这些不准确、不完整、不一致的数据是真实业务数据库甚至数据仓库中的常态,我们通常称之为 “脏数据”。
造成数据混乱的常见原因包括:
- 数据采集错误:传感器故障、人工录入疏忽或恶意提交错误信息、网络传输丢包或错误。
- 数据集成问题:在合并多个数据源时,由于命名规范、编码格式或计量单位不统一而产生冲突。
- 业务规则变更:数据库 schema 随时间演变,新旧数据格式并存。
- 处理过程漏洞:在数据更新、删除或备份过程中,未能保持关联数据的一致性(例如,删除用户后未清除其关联订单的引用)。
表3-1展示了一个存在典型数据问题的简单数据集示例:
表3-1 存在数据问题的原始数据示例
| Date | Temperature(℃) | Windspeed(m/s) | Event |
|---|---|---|---|
| 2017/4/1 | 17.6 | 3 | Rain |
| 2017/4/2 | 17.4 | 2 | Sunny |
| 2017/4/3 | 64.3 | NaN | Sunny |
| 2017/4/4 | 17.5 | 5 | Cloudy |
| 2017/4/5 | 18.2 | NaN | NaN |
| 4/6/2017 | 18.3 | 4 | Cloudy |
| 2017/4/7 | 18.1 | 3 | Sunny |
| 2017/4/8 | 17.2 | 1 | Rain |
| 2017/4/9 | 27.2 | 2 | Rain |
| 2017/4/10 | 18.2 | 3 | Sunny |
因此,面对“混乱”的真实数据,必须通过系统性的数据预处理技术来提升数据质量。 这一过程旨在消除“噪声”、修补漏洞、统一标准,从而确保后续的数据分析和挖掘过程更加高效,产出的结果更加准确、可靠和可信。
🔎2.数据预处理的主要环节
数据预处理是一个系统性的工程,通常包含以下几个核心环节,它们共同协作,将原始数据转化为分析就绪的形态。
🦋2.1 数据清洗
数据清洗是数据预处理的第一步,也是最为基础的环节。其目标是检测并处理数据中的错误、异常和不一致,即直接清理“脏数据”。
- 处理缺失值:对于表3-1中
Windspeed和Event的NaN(空值),可以采用删除记录、人工填写、使用全局常量填充、使用属性的中心趋势度量(如均值、中位数)填充,或基于其他属性通过预测模型估算等方法。 - 平滑噪声与处理异常值:对于表3-1中
2017/4/3的异常温度64.3℃,需要通过分箱、回归或聚类等方法识别,并根据业务逻辑决定是修正还是剔除。 - 纠正不一致性:检测并统一数据格式和编码。例如,统一表3-1中的日期格式(将
4/6/2017改为2017/4/6),或将“Rain”、“rain”、“小雨”等统一为标准化值。
🦋2.2 数据集成
在现实中,分析所需的数据往往分散在不同的数据库、文件或系统中。数据集成旨在将多个来源、格式、语义的数据合并成一个一致的数据存储(如数据仓库)。
- 模式集成:解决不同数据源之间的实体命名冲突(如
CustomerIDvsCust_ID)和属性值冲突(如长度单位用“米”还是“英尺”)。 - 实体识别:识别来自不同数据源的同一现实实体(例如,判断两个不同系统的客户记录是否指向同一个人)。
- 冗余与相关性分析:检测并处理重复的属性和记录。如果一个属性可以从其他属性推导出来(如“年龄”可由“出生日期”和当前日期计算),则该属性可能是冗余的。
🦋2.3 数据规约
当数据集过于庞大时,直接对其进行分析和挖掘会面临巨大的计算和存储开销,且可能遭遇“维度灾难”。数据规约技术旨在缩小数据集的规模,但尽可能保持原数据的完整性和分析结果的准确性。
- 维度规约(降维):减少所考虑的属性个数。常用方法包括主成分分析(PCA)、线性判别分析(LDA)以及通过特征选择(如过滤法、包装法、嵌入法)筛选出最具代表性的特征子集。
- 数量规约:减少数据记录的数量。常用方法包括数据立方体聚合、抽样(如简单随机抽样、分层抽样)以及用更紧凑的表示形式(如聚类、直方图)来替代原始数据。
🦋2.4 数据转换
数据转换是将数据转换为更适合特定数据挖掘任务的形式。这通常是算法驱动的,目的是提升模型性能和结果的可解释性。
- 标准化/归一化:将不同量纲、范围的属性值按比例缩放,使之落入一个特定的区间(如[0,1])或符合标准正态分布。这是为了解决类似“年龄(0-100)和年收入(0-1,000,000)数值范围差异巨大,导致在距离计算中年收入主导结果”的问题。
- 离散化:将连续型数据划分为若干区间(“分箱”),用区间标签替代具体数值。例如,将“年龄”离散化为“青年”、“中年”、“老年”。这有助于某些算法(如决策树)的运行,并能简化数据。
- 概念分层:将低层次的概念用更高层次、更概括的概念替换。例如,将具体的“日期”属性泛化为“季度”或“年份”。
总结而言,数据预处理的这四个主要环节——清洗、集成、规约、转换——并非总是严格顺序执行,在实际项目中它们常常交织、迭代进行。通过这一系列细致的工作,我们能够将原始、混乱的数据湖泊,梳理成清澈、规整、富含价值的数据水源,为后续深入的数据分析和智能挖掘提供坚实的基础。
- 点赞
- 收藏
- 关注作者
评论(0)