单元 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)

这是最简单的搜索技术。它从头开始,检查数据集中的每一个项目,直到找到目标项目或到达列表末尾。

  • 过程:
    1. 从第一项开始。
    2. 这是我们要找的项目吗?
    3. 如果是,停止。
    4. 如果不是,移至下一项并重复第 2 步。
  • 优点: 适用于未排序的数据。
  • 缺点: 对于大数据集非常慢,尤其是当目标项目在末尾或根本不存在时。
二分搜索 (Binary Search)

二分搜索是一种高效的搜索算法,但它有一个至关重要的前提条件:

前提条件:数据必须先经过排序。

类比:二分搜索就像在字典里找单词。你不会从第一页开始逐页翻;你会直接翻到中间!

二分搜索通过反复将可能包含目标的列表区域减半来工作。

二分搜索步骤(分治法):

  1. 找到列表的中间项
  2. 将中间项与目标项目进行比较:
    • 如果匹配,搜索完成。
    • 如果目标项目比中间项,则忽略列表的上半部分(包括中间项)。
    • 如果目标项目比中间项,则忽略列表的下半部分(包括中间项)。
  3. 在剩余的半部分列表中重复上述过程(从第 1 步开始),直到找到该项目或列表检查完毕。

核心优点: 速度极快,特别是对于大型列表,因为每次比较都会排除掉一半的可能性。

核心缺点: 要求数据集必须预先排序,这需要额外的时间。


索引 (Indexing)

有时,我们需要快速搜索,但又不想在每次添加新记录时都重新对庞大的数据库进行物理排序。这就是索引的用武之地。

索引是一个独立的、结构化的列表,其中包含主键值和指向记录存储位置的指针(内存地址)。

类比:教科书末尾的索引列出了关键词(主键)和页码(指针)。你可以通过索引快速找到信息,而无需阅读书中的每一页。

  • 过程: 系统不再搜索巨大的主数据文件,而是搜索规模较小且已排序的索引文件。
  • 优点: 检索速度更快,因为索引体积较小且经过优化(通常使用二分搜索技术)。主数据文件保持原样且无需排序,从而允许更快地插入和更新新记录。

核心结论: 排序使搜索(二分搜索)变得可行且快速。索引实现了无需物理重新组织整个数据集即可进行快速检索的目的。