Data-Science-For-Beginners:数据的定义与分类——从原始数据、定量/定性数据到结构化类型与数据来源的完整解析
本文基于 Data-Science-For-Beginners 课程第 3 课《Defining Data》展开,系统讲解数据科学中“数据是什么、如何被描述、如何被分类、从哪里获取”这四个基础问题。读完本文,你将掌握原始数据、定量/定性数据、结构化/半结构化/非结构化数据的判别方法,能够像课程作业一样对任意数据集完成三维分类(结构类型 × 值类型 × 来源类型),并知道在本仓库中哪些真实数据文件对应每一类,为后续第 2 部分“Working with Data”的数据库与 Python 实践打下认知基础。
1. 数据、数据点与数据集:从最原始的状态说起
课程给出的定义是:数据是用于做出发现并支撑明智决策的事实、信息、观察和测量结果(Data is facts, information, observations and measurements that are used to make discoveries and to support informed decisions)。
在此之上,有两个必须分清的基本单位:
- 数据点(data point):数据集中的单个数据单元,例如某一次心率读数、某一天的销售额。
- 数据集(dataset):数据点的集合。
数据集会呈现不同的格式与结构,并且通常由其来源(source,即数据从哪里产生)决定形态。课程原文举的例子很直观:一家公司的月度盈利可能存放在电子表格中,而智能手表采集的小时级心率数据则可能是 JSON 格式。数据科学家在同一个数据集中同时处理多种类型的数据是常态。
1.1 原始数据(Raw Data)
原始数据指以初始状态从来源流出、尚未经过分析或组织的数据。要让数据集“可被理解”,它必须被组织成人类和技术工具(如分析程序)都能处理的格式。
课程指出:数据集的结构(structure)描述它是如何被组织的,可以从结构角度分为三大类——结构化(structured)、非结构化(unstructured)、半结构化(semi-structured)。这三类会随来源不同而表现各异,但最终都落在这三个类别里。
本仓库的 data/ 目录恰好是一个天然的“原始数据标本库”,包含了 CSV、TSV、JSON 等多种格式的文件(data/birds.csv、data/diabetes.tsv 等),后续各节会逐一对照讲解。
2. 按值的性质分类:定量数据与定性数据
2.1 定量数据(Quantitative Data)
定量数据是数据集中的数值型观测,通常可被分析、度量并用于数学运算。课程给出的例子包括:一个国家的总人口、一个人的身高、一家公司的季度盈利。
课程进一步说明:经过额外分析,定量数据可以发现季节性的空气质量指数(AQI)趋势,或估计典型工作日高峰时段的交通拥堵概率。也就是说,定量数据是统计与概率分析的直接对象(对应课程第 4 节 统计与概率入门 的主题)。
在仓库数据中可以找到很好的对照。例如 data/taxi.csv(纽约出租车行程数据)中的 trip_distance(行程里程)、fare_amount(车费)、tip_amount(小费)都是典型的定量列:
VendorID,tpep_pickup_datetime,tpep_dropoff_datetime,passenger_count,trip_distance,RatecodeID,...,fare_amount,tip_amount,...
2.0,2019-07-15 16:27:53,2019-07-15 16:44:21,3.0,2.02,1.0,...,12.0,4.08,...
这些数据可直接用于计算平均车费、按小时段的里程分布等数学分析。
2.2 定性数据(Qualitative Data)
定性数据又称类别数据(categorical data),是不能像定量观测那样被客观度量的数据。它通常是各种形式的主观数据,用于刻画某个产品或过程的“质量”特征。
课程特别强调了一个容易混淆的细节:有些定性数据虽然是数字形式,但不用于数学运算,例如电话号码和时间戳。课程的例子包括:视频评论、汽车的制造商与型号、你 closest friends 最喜欢的颜色。定性数据的典型用途是理解消费者最喜欢哪些产品,或识别求职简历中的热门关键词。
注意:同一个数据集中往往同时包含两类数据。data/birds.csv 就是一个混合数据集,其表头为:
Name,ScientificName,Category,Order,Family,Genus,ConservationStatus,MinLength,MaxLength,MinBodyMass,MaxBodyMass,MinWingspan,MaxWingspan
其中 Category(如 Ducks/Geese/Waterfowl)、ConservationStatus(如 LC,即无危)是定性数据;而 MinLength、MaxBodyMass、MinWingspan 等是可运算的定量数据。后续课程(第 9–12 节 数据可视化)会分别演示这两类数据的可视化方式,这个数据集正是它们的练习材料。
3. 按组织结构分类:结构化、非结构化与半结构化
3.1 结构化数据(Structured Data)
结构化数据组织成行与列,且每一行都拥有相同的列集合:
- 列(column)代表某一类型的一个值,带有描述该值含义的名称(即元数据,如 第 5 节 关系型数据库 中说明的“列描述其所存储的数据”);
- **行(row)**包含实际值。
列上往往附有具体的规则或约束,以确保值准确代表该列。课程的经典例子:一个客户电子表格中,每行都必须有电话号码,且电话号码中永不包含字母——因此电话列上会有“不能为空、只允许数字”的规则。
结构化数据的好处是可以被组织成与其他结构化数据相关联的形式(即关系模型);但代价是整体结构变更成本很高。例如:给客户的电子表格新增一个“不能为空”的 email 列,你必须想办法为数据集中已有的每一行客户都补齐这个值。
课程的例子清单:电子表格、关系型数据库、电话号码、银行对账单。
在本仓库中,结构化数据的代表性样本是 airports.db——一个 SQLite 数据库,包含 Cities(id、city、country)与 Airports(id、name、code、city_id 外键)两张表,通过主键/外键关联。其建表结构、主键(PK)与外键(FK)约束,正是课程所述“列的规则或限制”在关系型数据库中的落地形式,第 5 节的作业 会引导你用 SQL 查询它。而 data/birds.csv 这类 CSV 表格,虽然本身是文件(见 3.3 节),但其内容组织同样是规整的行列表结构。
3.2 非结构化数据(Unstructured Data)
非结构化数据通常无法被归纳为行与列,也不包含必须遵循的固定格式或规则集。正因为限制少,新增信息更容易:课程举例说,如果一个每 2 分钟记录一次气压的传感器更新了固件、现在还能测量温度,非结构化数据不需要改动已有数据即可容纳新信息。
但代价是分析与调查耗时更长。课程的例子非常生动:一位科学家想从传感器数据中求上月平均温度,却发现传感器在部分记录中写入了字母 "e" 来表示设备损坏,而不是正常数字——数据因此不完整,必须先清洗。
课程的例子清单:文本文件、短信、视频文件。
这一点在本仓库中也能找到现实映射:data/form.csv 是一个问卷调查导出的表单数据,实际打开可以看到明显的“脏数据”痕迹——birth_month 列中 January 与 JAN 大小写/全称混用,state 列存在空值:
birth_month,state,pet
January,,Cats
JAN,CA,Cats
这正是课程描述的“非结构化/松散数据进入分析流程后暴露出质量问题”的场景。后续 第 8 节 数据准备 讲数据清洗时,处理这类不一致值就是核心任务之一。
3.3 半结构化数据(Semi-structured Data)
半结构化数据兼具结构化与非结构化数据的特征:它通常不遵循行列表格式,但以一种“被认为是结构化的方式”组织,可能遵循固定的格式或规则集。其结构在不同来源之间差异较大,从定义良好的层级结构到允许轻松集成新信息的更灵活形式都有。
课程还解释了元数据(metadata):元数据是帮助决定数据如何组织和存储的指示信息,会因数据类型不同而有不同名称,常见叫法包括 tags(标签)、elements(元素)、entities(实体)、attributes(属性)。例子:一封典型电子邮件有主题(subject)、正文(body)和一组收件人,可以按“谁发送的”或“何时发送”来组织。
课程的例子清单:HTML、CSV 文件、JSON(JavaScript Object Notation)。
这里有一个值得注意的细节:CSV 被本课程归为半结构化数据。虽然 CSV 内容上很像行列表,但它缺乏类型约束与强制模式(schema),更接近“有约定格式的文本”。仓库中大量使用 CSV/TSV 数据文件(data/ 目录下含 birds.csv、taxi.csv、diabetes.tsv、honey.csv、mushrooms.csv 等),后续课程都会围绕它们展开 Python 分析,这为本分类提供了一个贯穿全程的参照系。
JSON 则是半结构化数据中最重要的代表。仓库的 PersonsData.json 展示了典型的层级化半结构化文档:
[
{
"firstname": "Christophe",
"age": 32
},
{
"firstname": "Prema",
"age": 20
}
]
第 6 节 非关系型数据 会进一步说明:JSON 文档与 NoSQL 文档型数据库中的 document 高度相似,通过 API 返回的 JSON 数据通常可以直接存入文档数据库。该课还配套了用 API 抓取的 TwitterData.json(含 created_at、id、text 字段),正好印证课程“API 是常见数据来源、JSON 是常见数据格式”的说法。
3.4 三类结构对比小结
| 结构类型 | 行列表格式 | 格式/规则约束 | 新增信息成本 | 分析成本 | 课程示例 |
|---|---|---|---|---|---|
| 结构化 | 是(每行同列) | 强(列规则、约束) | 高(需回填已有行) | 低 | 电子表格、关系型数据库、银行对账单 |
| 非结构化 | 否 | 无 | 低 | 高(常需先清洗) | 文本文件、短信、视频文件 |
| 半结构化 | 通常否 | 中等(固定格式或层级) | 较低 | 中等 | HTML、CSV、JSON |
4. 数据来源(Sources of Data)
**数据来源(data source)**是数据最初被生成的位置,或数据“居住”的地方,它会因数据的采集方式和时间而异。
4.1 一级数据与二级数据
- 一级数据(primary data):由使用者自己生成的数据;
- 二级数据(secondary data):来自为通用用途而收集数据的来源。
课程的例子:一组科学家在雨林中采集观测值——对他们自己而言这是一级数据;如果他们将数据分享给其他科学家,对使用者而言它就是二级数据。同一份数据对生产者与使用者而言归属不同类别,这是理解数据来源分类的关键。
4.2 四类常见数据源
课程列举了四类数据来源:
- 数据库(Databases):最常见的来源之一,依赖**数据库管理系统(DBMS)托管和维护数据,用户通过名为查询(query)**的命令探索数据。对应仓库 第 5 节 中 SQL 的
SELECT ... FROM ... WHERE ...与 JOIN 操作,以及airports.db这个可直接在本地打开的 SQLite 实例。 - 文件(Files):作为数据源可以是音频、图像、视频文件,也可以是 Excel 等电子表格。仓库根目录下的 data/ 目录就是这类“文件型数据源”的集中展示,包括 CSV、TSV 与 COVID 时间序列数据(data/COVID/ 下的 confirmed/deaths/recovered 三个全球 CSV)。
- 互联网(Internet):托管数据的常见位置,数据库和文件都可在其上找到。
- API 与网络抓取(APIs & Web Scraping):
- **应用程序编程接口(API)**允许程序员通过互联网为外部用户创建数据共享通道;
- **网络抓取(web scraping)**则是从网页中提取数据的过程。
- TwitterData.json 正是“用 API 获取数据”这一模式在本仓库中的实物证据。
课程同时说明:关于如何实际使用这些数据来源的操作细节,集中在 Working with Data 部分(关系型数据库、非关系型数据、Python 数据处理、数据准备四节)中。
5. 实战演练:像课程作业一样完成数据集三维分类
本课作业(Classifying Datasets) 要求对五个场景分别判断三类属性:结构类型(Structured / Semi-Structured / Unstructured)、值类型(Qualitative / Quantitative)、来源类型(Primary / Secondary)。评分标准(Rubric)为:五项全部正确识别为 Exemplary,正确三项为 Adequate,两项及以下为 Needs Improvement。下面逐题给出判断依据(答案供自查核对):
场景 1:公司被收购后,数据科学家从母公司收到一份客户电话号码的电子表格。
- 结构类型:Structured——电子表格是行列表结构(电话号码本身也是课程列举的结构化数据例子之一);
- 值类型:Qualitative——电话号码虽为数字,但课程明确指出它“不通常用于数学运算”;
- 来源类型:Secondary——数据由母公司这一外部来源收集提供,不是数据科学家自己生成的。
场景 2:智能手表持续采集佩戴者的心率数据,原始数据为 JSON 格式。
- 结构类型:Semi-structured——JSON 在课程中明确归为半结构化;
- 值类型:Quantitative——心率是可度量的数值观测;
- 来源类型:Primary——数据由佩戴者(用户)直接生成。
场景 3:员工士气的工作场所调查,存储在 CSV 文件中。
- 结构类型:Semi-structured——CSV 在课程示例清单中属于半结构化;
- 值类型:视调查内容而定,士气调查多为Qualitative(主观评价/类别);
- 来源类型:Primary——调查由该组织自行发起采集。
场景 4:天文学家访问一个由太空探测器收集的星系数据库,其中包含每个星系内的行星数量。
- 结构类型:Structured——数据库(尤其关系型数据库)是结构化数据的典型载体;
- 值类型:Quantitative——行星数量是数值观测;
- 来源类型:Secondary——数据由太空探测器项目收集,对访问的天文学家而言是二级数据(对采集方则是一级)。
场景 5:个人理财应用通过 API 连接用户的金融账户计算净资产,交易以行列表形式呈现,类似电子表格。
- 结构类型:Structured——以行与列组织的交易数据;
- 值类型:Quantitative——金额、账户余额等数值;
- 来源类型:Primary——数据来自应用用户本人的账户。
这五题覆盖了课程定义的全部判别规则,是检验自己是否真正理解第 2、3、4 节概念的最有效方式。
6. 课程挑战与延伸阅读
6.1 挑战:对真实公开数据集进行分类
课程的 Challenge 建议:利用 Kaggle 的数据集搜索工具寻找若干有趣的数据集,并用以下标准对其中 3–5 个进行分类:
- 数据是定量的还是定性的?
- 数据是结构化的、非结构化的还是半结构化的?
在动手前,可以先用本仓库 data/ 目录里的现成文件做“热身”:例如 birds.csv(混合定量/定性、内容行列表格)、taxi.csv(混合定量/定性)、mushrooms.csv(约 8124 行菌类特征)、UID_ISO_FIPS_LookUp_Table.csv(约 4021 行国家地区查找表,含 Population 定量列与 Country_Region 定性列)、TwitterData.json(半结构化 + 定性的 text 字段 + 定量的 created_at 时间戳)。
6.2 小结:本课学到的四件事
课程结论部分概括了本节的学习目标,全部达成后你就完成了对数据的第一轮“盘点”:
- 数据是什么(facts、information、observations、measurements,支撑发现与决策);
- 数据如何被描述(原始数据、定量、定性、结构化、非结构化、半结构化);
- 数据如何被分类与归类(结构类型 × 值类型 × 来源类型三个维度);
- 数据可以在哪里找到(数据库、文件、互联网、API、网络抓取;一级/二级数据)。
6.3 后续路线
分类只是起点。本仓库的后续课程会把这些概念逐一落地:
- 第 5 节 关系型数据库:用
airports.db实操 SQL 查询与 JOIN,理解结构化数据的关联方式; - 第 6 节 非关系型数据:电子表格的单元格/公式/函数,以及 NoSQL 四大类型(键值、文档、列族、图)与 Cosmos DB 模拟器的 JSON 文档查询;
- 第 7 节 Python 数据处理 与 第 8 节 数据准备:把
data/目录中的 CSV/TSV 读入程序并清洗、整理; - 第 9–12 节 数据可视化:对定量、定性数据分别选择正确的图表形态。
掌握“数据是什么、长什么样、从哪来”,就能在面对任何新数据集时,先完成准确的类型判断,再决定采用何种工具与流程去分析它——这正是数据科学工作流的第一步。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
