Geonode logo
Geonode Team

Geonode Team

更新于:2026年10月7日

发布于:2026年9月2日

什么是数据集?面向初学者的讲解

数据集是指经过组织整理、可作为一个整体进行处理的数据集合。这一定义范围足够广泛,既包括电子表格、数据库表、照片目录,也包括一亿个网页。 区分有用数据集与一堆文件的关键,不在于大小或格式,而在于其结构、文档说明以及来源信息。 本指南将介绍数据集的构成要素、常见格式之间的差异,以及在信任某个数据集之前应核查的事项。

我们的视角——虽然只是一个很朴素的视角:我们是Geonode,向从网络上收集数据的人提供代理服务,因此能在数据集刚生成时就看到它们。值得分享的一个观察是:代价高昂的错误往往发生在数据采集阶段,却要数月后才会被发现。 没有记录数据收集的时间、没有标注哪些字段可能缺失、没有保留原始响应——这些在最初都看似无伤大雅,但当有人提出你未曾预料的问题时,它们都会导致数据集无法使用。本文中的建议无需任何购买;这些好习惯是免费的,而且大多数只需几分钟就能养成。

基本结构

无论格式如何,大多数数据集都具有相同的结构。

记录 —— 单个项目。表格中的行、JSON 数组中的对象、目录中的文件。一条记录即代表你所描述的一个事物:一个人、一笔交易、一种产品、一张照片。

字段 —— 每个记录的属性。表格中的列,对象中的键。例如:名称、价格、日期、类别。

值 —— 特定记录中某个字段所包含的内容。

模式 —— 对字段是否存在、其数据类型以及哪些字段为必填项的描述。有时是正式且强制执行的,有时仅为非正式的共识,偶尔则完全没有——而正是这种情况会在后期引发问题。

元数据 —— 关于数据集本身的数据。何时收集的、由谁收集的、从何处收集的、采用何种许可协议、以及已知的限制有哪些。

最后一点是初学者常会忽略、而经验丰富的从业者却坚持要关注的。没有元数据的数据集,只是一组数字,无法判断它们能否解答你的问题。

结构化、半结构化和非结构化

这是一个有用的三分类法,因为它决定了在无需预处理的情况下你能做什么。

结构化数据具有固定的模式和一致的数据类型。例如数据库表、带有固定标题的CSV文件、电子表格。 你可以直接对其进行查询、筛选和聚合。

半结构化数据具有组织性,但没有严格的模式。例如,记录可能包含不同字段的 JSON、XML 以及日志行。其中存在可解析的结构,且该结构在不同记录之间存在差异。

非结构化数据没有固有的记录结构。例如文本文档、图像、音频、视频。这并非意味着其中没有信息,而是从其中提取字段需要模型或人工干预。

在实际应用中,这两者的界限往往模糊不清。例如,一个包含图像的目录,配以列出文件名、尺寸和标签的 CSV 文件,就是一种带有结构化索引的非结构化内容——这不仅是机器学习数据集的标准组织方式,通常也是一个很好的实践模式。

大多数实际工作都涉及这两者之间的转换。网络爬虫将非结构化网页转换为结构化记录;转换过程是错误的主要来源,这也是保留原始数据源至关重要的原因。

格式及其代价

这一选择的重要性远超表面所见。

格式结构保留的类型数据流适用场景
CSV平面表格否 — 均为文本是电子表格、数据库加载
JSON嵌套是否,需要完整文档API、配置、嵌套记录
JSON Lines每行嵌套是是集合、日志、事件流
Parquet列式、类型化是,完全保留部分保留分析、归档、海量数据
SQLite关系型是基于查询可移植的关系型数据

决定大多数情况的三个要点。

CSV 没有正式的规范。 RFC 4180 就是这样描述自身的,称其描述了“大多数实现似乎遵循的内容”。这就是大家常遇到的分隔符、编码和引号问题的原因。但它结构紧凑且通用的可读性,这也是它得以延续的原因。

JSON Lines 虽未被充分利用,但通常是数据采集的理想选择。 每行一个 JSON 文档:它能在恒定内存中流式读取,可安全追加数据,且即使文件被截断,仍能获取所有完整的记录。JSON 数组则无法做到这些,且一旦采集任务崩溃,留下的文件将无法解析。

对于任何大型且需要分析的数据,Parquet 都是理想的目标格式。 列式存储意味着,当查询涉及四十列中的三列时,仅读取这三列;由于相似值集中存储,其压缩效率远高于文本格式;且数据类型得以精确保留。其缺点是无法被人类直接阅读,这是必须权衡的取舍。

合理的处理流程应先将数据收集为 JSON Lines(因其能容忍中断),随后分批转换为 Parquet 格式以供分析。我们在 JSON 与 CSV 的对比 中详细比较了这些文本格式。

什么使数据集具有可用性:FAIR

科学界对此进行了系统化定义,该框架的应用范围远不止于科研领域。

2016年发布的FAIR原则提出了四项特性。

可查找性。 F1 要求“(元)数据应被分配一个全球唯一且持久的标识符”;F2 要求“数据应通过丰富的元数据进行描述”;F3 要求元数据“清晰且明确地包含其所描述数据的标识符”;F4 要求数据“在可搜索的资源中进行注册或索引”。

**可访问性。**A1要求“通过标准化通信协议,利用其标识符检索数据”。A2是人们常感意外且可被视为最具价值的一条:“即使数据不再可用,元数据仍可访问。” 数据集的描述应比数据集本身更持久,以便数年后阅读论文的人能够了解其中使用了哪些数据。

互操作性。 I1要求“一种用于知识表示的、正式的、可访问的、共享的且广泛适用的语言”; I2 要求词汇表本身遵循 FAIR 原则;I3 要求“对其他(元)数据的合格引用”。

可重用性。 R1 要求数据“通过多种准确且相关的属性进行丰富描述”。

将其转化为普通项目的实践:为数据集赋予一个稳定的标识符,记录其内容及来源,在有标准字段名和单位时使用它们,注明许可协议,并即使在删除数据后也要保留相关文档。

数据集的文档编写

FAIR原则指出,文档至关重要。《数据集数据表》(Datasheets for Datasets)则阐述了应包含哪些内容。

该2018年提案借鉴了电子行业的做法——该行业中的每个组件在出厂时都会附带一份数据表。 该提案主张,每个数据集都应附有文档,涵盖“其创建动机、构成、采集过程、推荐用途等”,以便“促进数据集创建者与使用者之间的有效沟通,并鼓励机器学习社区将透明度和问责制置于优先地位”。

由此衍生出的实用检查清单如下:

为何存在? 收集该数据是为了回答什么问题。这决定了它能否解答你的问题。

数据集包含什么? 记录、字段、类型、单位,以及如何定义缺失值。

数据是如何收集的? 方法、日期、来源、抽样方式。在一周内从单一网站抓取的数据集,与经过一年时间聚合而成的数据集是截然不同的对象。

它不包含什么? 已知的缺失、偏差、被排除的群体、缺失的时间段。这是最有价值的部分,却也是最常被忽略的部分。

应该如何使用它,又该如何避免误用? 预期应用场景以及已知的不适用情况。

许可协议是什么? 以及联系方式。

如何维护? 是否会更新,以及版本如何标识。

当数据集刚发布时,撰写这些内容只需一小时;但十八个月后,当收集者已离职时,这几乎是不可能完成的任务。

质量评估

共有六个维度,每个维度都有实际可执行的检查方法。

完整性。 缺失数据有多少?这些缺失是否具有随机性?统计每个字段的空值数量。如果某个字段有40%的空值,这说明了某种问题——要么是数据采集失败,要么是该字段确实为可选字段,你应将其记录在案。

准确性。 这些值是否反映了实际情况?虽然总体上难以验证,但在具体情况下却可操作:手动将随机抽取的样本与源数据进行核对。检查二十条记录只需十五分钟,就能发现大多数系统性错误。

**一致性。**相同的内容是否以相同的方式呈现?日期格式混杂、国家既出现 UK 又出现 United Kingdom、价格有时带货币符号有时不带。统计每个分类字段的唯一值数量——如果一个字段包含三百个不同的“国家”,说明该字段存在标准化问题。

及时性。 数据何时收集的?这对你的研究问题重要吗?上季度的价格已是历史数据,而非当前数据。

代表性。 样本是否与你关注的总体相符?评论数据集其实是写评论的人群的数据集。

来源。 能否追溯每条记录的来源?这正是让你能够重新推导、审核和更正数据的关键——这也是为何在存储已解析记录的同时保留原始响应数据是值得的。

请在分析之前而非之后进行这些检查。在图表中发现标准化问题,其代价远高于在值计数中发现该问题。

机器学习中的数据划分

如果数据集用于训练模型,那么数据的划分与数据本身同样重要。

训练集 —— 模型从中学习的数据。通常占大部分。 验证集 —— 用于调整模型并在不同模型之间进行选择。 测试集 —— 完全保留,仅使用一次,用于评估模型在真实环境中的表现。

这方面常会出现三种常见问题。

信息泄漏。 测试集中的信息影响了训练。在拆分前使用基于整个数据集计算的统计量进行缩放或插补是典型的泄漏形式,这会悄无声息地夸大结果。

分组间的记录重复。 训练集和测试集中存在近乎相同的条目,意味着模型已经看到了正确答案。从网络收集的数据特别容易出现这种情况,因为相同的内容会出现在多个 URL 上。

**时间泄漏。**对于按时间排序的数据,随机划分会导致模型从未来数据中学习。应改用按日期划分。

一般原则是:测试集应与实际将要面对的情况相符。如果要根据今天预测明天,就按时间划分;如果将接触新用户,就按用户划分。

许可协议:决定你能做什么的关键

一个你无法合法使用的数据集,就不能算作你拥有的数据集。人们检查许可协议的频率远低于应有水平,通常是因为这看起来很枯燥——直到它成为唯一重要的事情为止。

开放数据许可。 知识共享(Creative Commons)是这一领域的常见许可体系。CC0 在法律允许的范围内将作品置于公有领域,且不附加任何条件。CC BY 要求注明出处。CC BY-SA 增加了“相同方式共享”的条件,这意味着衍生作品必须采用相同的许可——这可能与商业产品不相容。 CC BY-NC 禁止商业用途,而“非商业”的定义较为宽松,若使用情况存在歧义,则可能构成实际风险。政府门户网站通常采用量身定制的开放许可协议,这些协议在实践中往往较为宽松;请务必仔细阅读相关条款,切勿想当然。

数据库权利与著作权是分开的。 在欧盟和英国,一种“特有的”(sui generis)权利保护了在获取、验证或呈现数据库内容方面所做的实质性投资——无论任何单个记录是否受版权保护。仅包含基本事实的数据集仍可作为数据库受到保护,这正是数据聚合项目所面临的情况。

**服务条款属于合同性质。**从服务条款中禁止自动化访问的网站收集的数据集,无论单个记录的内容如何,都存在这一问题。这与版权是不同的问题,即使事实本身不受保护,该问题依然适用。

**个人数据有其独特的监管框架。**如果记录能够识别个人——无论是直接识别还是通过组合识别——数据保护法不仅适用于数据的收集,也适用于您对这些数据的持有和处理。这意味着必须具备合法依据、保留期限限制,以及数据主体可以对您行使的权利。 “该数据对公众可见”本身并不构成合法依据。

**且衍生数据集将继承相关限制。**使用“共享相同”许可的数据集训练模型,或聚合多个具有不同许可的来源,所产生的义务是输入数据许可条件的并集,而非其中最宽松的那一项。

实际操作中的惯例是在收集数据时,将许可协议记录在数据集的文档中,并附上当日条款的链接。许可协议会变更,条款页面也会被重写,能够证明你在收集数据时同意了什么,比仅凭记忆要可靠得多。

数据集的来源

以下是五种来源,按所需工作量从高到低排序。

已发布的开放数据集。 政府门户网站、研究资料库、机构档案库。免费、附有文档,且质量通常足够高。建议优先查阅——公开数据中已有的大量内容无需重复收集。

API。 结构化、经过授权且稳定。如果数据源提供了API,这几乎总是最佳途径。

商业数据提供商。 需获得许可、提供技术支持,且定价相应。若将工程开发时间计算在内,通常比自行构建同类系统更为经济。

自有系统。 日志、交易记录、遥测数据。通常是组织可获取的最具价值的数据,却往往被忽视。

网络采集。 我们的数据销售来源。 当数据公开可见且不存在官方授权渠道时,此方法适用——但需履行相应义务:robots.txt、服务条款、版权、数据库权利,以及涉及个人数据时的数据保护法。这也是最需要记录来源的渠道,因为如果刮取的数据集没有记录何时及从何处获取,将很难进行辩护或重现。

大家还常问

简单来说,什么是数据集?

数据集是指经过组织整理、可作为一个整体进行处理的相关数据集合——通常由记录(项目)及其字段(属性)组成,并附有对字段含义的说明。电子表格、数据库表以及一个标有标签的图像文件夹都属于数据集。

数据与数据集有什么区别?

数据是原始素材;数据集则是为特定目的而汇编的、具有明确边界且经过组织整理的数据集合。正是这种组织和边界使其具有实用性——你可以统计数据集中的记录数量、描述其字段,并说明其来源。

什么是结构化数据和非结构化数据?

结构化数据具有固定的模式和一致的类型,例如数据库表。非结构化数据没有固有的记录结构——如文本、图像、音频。半结构化数据介于两者之间,具有组织性但形式可变,例如 JSON 或日志文件。

数据集应采用哪种格式?

CSV 适用于导入电子表格或数据库加载器的扁平表格。JSON Lines 适用于增量收集的数据,因为它支持流式传输且能耐受截断。Parquet 适用于大型分析数据,因为列式存储和类型化能大幅降低查询成本。

什么样的数据集才算高质量?

完整性、准确性、内部一致性、及时性、对目标群体的代表性,以及可追溯的来源。每项都有具体的验证方法——空值计数、人工验证的样本、每个分类字段的唯一值计数。

应如何记录数据集?

应记录其存在原因、包含内容、收集方式与时间、已知的缺失和偏差、应如何使用及不应如何使用、许可协议以及维护方式。“数据集数据表(Datasheets for Datasets)”提案是这方面的标准参考。

什么是 FAIR 原则?

可发现(Findable)、可访问(Accessible)、可互操作(Interoperable)、可重用(Reusable)——这是 2016 年发布的一套数据管理框架。 最被低估的要求是:元数据应“即使在数据不再可用时”仍可访问,因此描述信息将比数据集本身存续更久。

如何将数据集拆分为机器学习所需的子集?

将其划分为训练集、验证集和保留测试集,其中测试集仅使用一次。仅基于训练集进行任何数据转换,在各分集间移除近似重复项,对于按时间排序的数据应按时间顺序而非随机进行划分——这三点都是导致结果被“隐性夸大”的常见原因。

总结

数据集由记录、字段和值组成,再加上赋予它们意义的描述。正是这部分描述决定了六个月后是否还有人能使用它——包括你自己。

相比格式,习惯更为重要。适合的场景就用 CSV;对于增量收集的数据,建议使用 JSON Lines,因为它能在任务中断后仍能保留数据;当数据量庞大且查询属于分析性质时,则选用 Parquet。这些格式均可适用;真正的失败模式在于:若将 JSON 数组用于长期运行的数据收集,一旦发生崩溃,最终将得到一个无法解析的文件。

最值得投入精力的,是在数据集还“新鲜”时编写文档。 数据集为何存在、如何及何时收集、缺失哪些内容以及不应用于哪些场景。FAIR原则对此作了正式阐述,“数据集数据表”提案为你提供了一份检查清单,二者指向同一个方向:元数据应比数据本身更长久。

在分析之前请先检查数据质量。统计每个字段的空值数量、分类字段的唯一值数量,并手动核对二十条记录与源数据,通常不到一小时就能发现大多数系统性问题——这比在得出结论后才发现这些问题要经济得多。