Hadley Wickham 去年在 JSS 中写了一篇名为“Tidy Data”(链接)的出色文章,内容涉及数据操作以及将数据置于“最佳”状态以进行分析。但是,我想知道在工作环境中呈现表格数据的最佳实践是什么?假设您的同事要求您向他提供一些数据。您在构建数据时使用了哪些一般规则?“整理数据”中的指南是否同样适用于您与非数据专业人员共享数据的情况?显然,这是非常特定于上下文的,但我问的是高级别的“最佳实践”。
创建“整洁数据”的最佳实践
正如 Hadley 所预料的那样,他的文章包含了对整洁数据的良好定义,我同意他文章中的几乎所有内容,并相信这不仅对“数据专业人士”有效。然而,如果避免一些更基本的问题,他提出的一些观点相对容易修复(例如,使用他编写的软件包)。大多数这些问题是由于 Excel 的广泛使用造成的。Excel 是一种有价值的工具并且有其优点,但它的某些功能给数据分析师带来了问题。
几点(根据我的经验):
- 有些人喜欢彩色电子表格,并大量使用格式选项。这一切都很好,如果它可以帮助他们组织数据并准备表格以进行演示。但是,如果单元格颜色实际上对数据进行编码,则很危险。这些数据很容易丢失,很难将这些数据导入统计软件(例如,请参阅Stack Overflow 上的这个问题)。
- 有时我会得到一些格式很好的数据(在我告诉人们如何准备数据之后),但尽管要求他们使用专用列或单独的文件进行评论,但他们决定将评论放在值列中。我不仅需要在导入数据时以特殊方式处理此列,而且主要问题是我需要滚动浏览所有表格才能看到此类注释(我通常不会这样做)。如果他们使用 Excel 的注释功能,情况会变得更糟。
- 包含多个表格、多个标题行或连接单元格的电子表格需要手动工作以准备将它们导入统计软件。优秀的数据分析师通常不喜欢这种手工工作。
- 永远不要在 Excel 中隐藏列。如果不需要它们,请删除它们。如果需要,请出示。
- xls 及其后代文件格式不适合与他人交换数据或存档。打开文件时公式会更新,不同的 Excel 版本可能会以不同的方式处理文件。我推荐一个简单的 CSV 文件,因为几乎所有与数据相关的软件都可以导入该文件(甚至是 Excel),并且可以预期这不会很快改变。但是,请注意 Excel 在保存到 CSV 时会舍入到可见数字(从而丢弃精度)。
- 如果您想让他人的生活变得轻松,请遵守 Hadley 文章中给出的原则。每个变量都有一个值列和定义层的因子列。
可能还有几点我没有想到。
首先,我通常是获取数据的人。所以这可能是我的愿望清单。
因此,我最重要的一点是:与将要分析数据的人交谈。
我快速浏览了这篇论文:Hadley 写的很多内容都可以通过“规范化你的关系数据库”来概括。
但他也提到,根据实际情况,在长格式或宽格式中使用相同的变量是明智的。
这是一个例子:我处理光谱。从物理/光谱学的角度来看,光谱是例如强度作为波长的函数:I = f (λ)。由于物理原因,这个函数是连续的(并且连续可微)。对特定的离散化只是出于实际原因(例如数字计算机、测量仪器)。这将清楚地指向一个长表格。但是,我的仪器测量不同通道(CCD/检测器线或阵列)中的不同。数据分析还将每个视为一个变量。那将有利于广泛的形式。
但是,数据的非标准化显示/分布有一些实际优势:
检查数据是否完整可能要容易得多。
如果数据实际上在数据库中(在软件意义上),则在规范化关系数据库中的连接表是可以的。在那里,您可以放置确保完整性的约束。如果数据以几个表的形式交换,实际上链接会很乱。
数据库规范化消除了冗余。在真实的实验室生活中,冗余用于双重检查完整性。
因此,不应过早删除冗余信息。如今,内存/磁盘大小似乎不再是问题。而且我们的仪器产生的数据量也在增加。
我正在使用一种可以在几个小时内轻松生成 250 GB 高质量数据的仪器。那些 250 GB 是数组格式。将其扩展为长格式会使它扩大至少 4 倍:每个阵列维度(横向 x 和 y,以及波长 λ)将变成一列,加上一列用于强度)。此外,我在数据分析过程中的第一步通常是将归一化的长形式数据转换回光谱范围的形式。
- 通常,数据分析需要特定的形式。这就是为什么我建议与分析数据的人交谈。
这些归一化点解决的整理工作很乏味,而且不是一件好事。然而,在实践中,我通常会花更多的时间在整理的其他方面
在实践中确保数据的完整性和完整性是我整理数据工作的很大一部分。
数据不是易于阅读的格式/在略有不同的格式之间切换:
我以许多文件的形式获得大量数据,通常一些信息存储在文件名和/或路径中:仪器软件和/或生成的文件格式不允许以一致的方式添加信息,所以我们要么有一个附加表(如关系数据库中),将元信息链接到文件名,要么文件名对重要信息进行编码。
错别字或文件名模式的细微变化在这里会造成很多麻烦。
- 从测量的角度整理:消除错误测量(通常是由已知的物理过程引起的,例如某人不小心打开灯、宇宙射线击中探测器、相机的帧偏移……)。