单元 3:数据处理 - 学习笔记
你好,未来的 IT 专业人士!欢迎来到“数据处理”这一章。别担心,听起来很复杂,但它本质上就是将原始信息转化得更有用、更可靠且更易于查找的过程。这就像整理你那杂乱的房间,好让你能轻松找到自己最爱的那件夹克!
在本单元中,我们将探索确保数据高质量所需的基本步骤,并学习计算机用来快速组织和检索信息的核心技术。
基础知识:数据类型
在处理数据之前,计算机需要知道它正在处理的是什么类型的数据。分配数据类型可以告诉系统分配多少内存空间,以及对这些数据可以进行哪些操作。
想象一下你有三个不同的盒子:一个装苹果,一个装橘子,还有一个装钱。你肯定不会把钱放进苹果盒子里!数据类型就是贴在这些盒子上的标签。
- 整数 (INT): 用于整数(没有小数部分的数字)。
示例:10, -5, 4000。用于计算物品数量或年龄。 - 实数 / 浮点数 (FLOAT): 用于包含小数或分数部分的数字。
示例:10.5, 3.14159, -0.01。用于测量数据或货币计算。 - 布尔值 (BOOL): 用于只有两种可能状态的数据:真 (True) 或 假 (False)(通常用 1 或 0 表示)。
示例:是否登录 (True)、是否在线 (False)。用于逻辑判断。 - 字符 / 字符串 (CHAR/STRING): 用于文本,包括字母、符号、空格以及作为文本处理的数字。
示例:"Hello World", "123 Main Street", "A"。电话号码通常存储为字符串,因为你不会对其进行数学运算。
快速回顾: 数据类型能够确保内存的高效使用,并防止逻辑错误(例如试图将名字与数字相加)。
第 1 节:数据质量 – 验证 (Validation) 与 核对 (Verification)
输出的质量完全取决于输入的质量。这通常被概括为:无用输入,无用输出 (Garbage In, Garbage Out, GIGO)。
我们使用两个关键过程来确保数据质量:验证 (Validation) 和核对 (Verification)。学生们经常混淆这两者,让我们仔细看一看!
数据验证 (Validation):数据是否“合理”?
数据验证用于检查输入的数据是否符合预定义的规则,即数据是否合理或可接受。它*不*检查数据本身是否完全正确,只检查其格式或范围是否正确。
类比:如果你询问某人的年龄,验证会检查该数字是否在 1 到 150 之间。它无法查出对方谎报了 50 岁!
验证检查的类型
- 存在性检查 (Presence Check): 确保必填字段已填写(不能为空)。
示例:注册表单中的用户名必须填写内容。 - 范围检查 (Range Check): 确保数据落在指定的上下限之间。
示例:每周工作时长必须在 1 到 60 小时之间。 - 格式检查 (Format Check): 确保数据以特定的模式或结构输入。
示例:邮政编码必须遵循 LLNN NLL 格式(例如:SW1A 0AA)。 - 长度检查 (Length Check): 确保数据包含最少或最多的字符数。
示例:密码长度必须至少为 8 个字符。 - 查表检查/值列表 (Lookup Table/Value List): 将数据与存储在别处的可接受值列表进行比对。
示例:选择国家时,输入的内容必须与预先批准的国家列表中已有的选项相匹配。 - 校验位 (Check Digit): 添加在长数字(如 ISBN 或条形码)末尾的一个特殊数字,它是根据其他数字计算得出的。系统在输入时会重新计算校验位,以确保数字输入无误。
示例:广泛用于银行(账号)和产品代码。
验证记忆辅助: 验证确保数据符合规则(范围、格式、长度等)。
数据核对 (Verification):数据是否“准确”?
数据核对用于检查输入的数据是否与原始源数据一致。它确保的是准确性。
类比:核对就是将购物小票上的金额与你看到的货架价格标签进行对比。
核对方法
- 双重输入 (Double Entry): 数据被输入两次,通常由两个不同的人输入,或者由同一个人再次输入。计算机对比两次输入的结果。如果它们一致,则认为数据准确。
常见错误:如果两次输入都犯了同样的拼写错误,双重输入就无法检测出来。 - 视觉检查 (Visual Check): 人工手动将屏幕上显示的数据与原始源文档进行比对(例如,将扫描表单与原始纸质文档对比)。
优点:对于较小的数据集简单有效,但对于大量数据,速度慢且容易出现人为错误。
核心结论: 验证确保数据合理;核对确保数据准确。
第 2 节:数据处理 – 组织与检索
当数据被输入并验证后,我们通常需要对其进行组织,使其发挥作用。最关键的两种处理操作是排序和搜索。
数据排序
排序是将数据记录按特定顺序排列的过程,可以是升序(A-Z, 1-10)或降序(Z-A, 10-1)。
为什么要排序? 这不仅让人们阅读报告时更加轻松,更重要的是,它能显著加快计算机搜索的速度。
你知道吗? 数据库通常允许你按多个字段进行排序(例如:先按姓氏排序,在姓氏相同的情况下再按名字排序)。
数据搜索
搜索是在大量记录中查找特定数据片段的过程。
线性搜索 (Linear Search / Sequential Search)
这是最简单的搜索技术。它从头开始,检查数据集中的每一个项目,直到找到目标项目或到达列表末尾。
- 过程:
- 从第一项开始。
- 这是我们要找的项目吗?
- 如果是,停止。
- 如果不是,移至下一项并重复第 2 步。
- 优点: 适用于未排序的数据。
- 缺点: 对于大数据集非常慢,尤其是当目标项目在末尾或根本不存在时。
二分搜索 (Binary Search)
二分搜索是一种高效的搜索算法,但它有一个至关重要的前提条件:
前提条件:数据必须先经过排序。
类比:二分搜索就像在字典里找单词。你不会从第一页开始逐页翻;你会直接翻到中间!
二分搜索通过反复将可能包含目标的列表区域减半来工作。
二分搜索步骤(分治法):
- 找到列表的中间项。
- 将中间项与目标项目进行比较:
- 如果匹配,搜索完成。
- 如果目标项目比中间项小,则忽略列表的上半部分(包括中间项)。
- 如果目标项目比中间项大,则忽略列表的下半部分(包括中间项)。
- 在剩余的半部分列表中重复上述过程(从第 1 步开始),直到找到该项目或列表检查完毕。
核心优点: 速度极快,特别是对于大型列表,因为每次比较都会排除掉一半的可能性。
核心缺点: 要求数据集必须预先排序,这需要额外的时间。
索引 (Indexing)
有时,我们需要快速搜索,但又不想在每次添加新记录时都重新对庞大的数据库进行物理排序。这就是索引的用武之地。
索引是一个独立的、结构化的列表,其中包含主键值和指向记录存储位置的指针(内存地址)。
类比:教科书末尾的索引列出了关键词(主键)和页码(指针)。你可以通过索引快速找到信息,而无需阅读书中的每一页。
- 过程: 系统不再搜索巨大的主数据文件,而是搜索规模较小且已排序的索引文件。
- 优点: 检索速度更快,因为索引体积较小且经过优化(通常使用二分搜索技术)。主数据文件保持原样且无需排序,从而允许更快地插入和更新新记录。
核心结论: 排序使搜索(二分搜索)变得可行且快速。索引实现了无需物理重新组织整个数据集即可进行快速检索的目的。