熊猫数据框中的整洁数据

数据挖掘 r 熊猫 数据清理
2021-10-06 13:21:21

H. Wickham 有一篇非常著名的文章,Tidy data,其中他定义了某种类型的已清理数据并将其称为 (dataframe-)tidy,并在几个示例中使用 R 进行了说明。最后,他比较了自己的定义将 dataframe-tidy 转换为其他可能的实现整洁的方法,并在以下段落中提到 array-tidy(但没有给出任何进一步的解释或示例):

幸运的是,由于有许多高效的工具可以处理高维数组,甚至是稀疏数组,这种数组整齐的格式不仅可能非常紧凑和高效,而且还应该能够轻松地与统计数据。事实上,这就是 pandas Python 数据分析库(McKinney 2010)所采用的方法。

数组整齐的数据是什么意思,为什么他暗示这在某种程度上是 Python 中 pandas 库的默认值?

2个回答

TL;DR: Array-tidy 扩展了多个数据帧的整洁性,这些数据帧由额外的共享维度(例如时间)索引。

据我了解,array-tidy 和 dataframe-tidy 是指用于实现您的整洁数据的底层数据模型。这似乎是对 plyr 和 pandas 在数据结构逻辑上的不同之处的参考

Pandas 是围绕面板数据的概念开发的,面板数据是典型的观察和变量的二维数据框架,但样本是在一段时间内积累的。Pandas 的名称甚至源于这种特殊类型的数据(pan el da ta s tructures,per this McKinney presentation and the pandas docs)。包含第三个维度,即随着时间的推移考虑您的数据,似乎已经引发了一些关于熊猫将如何进化的思考。我建议查看幻灯片(特别是标题为“熊猫杀手功能:索引”的幻灯片)。

将这与 Tidy Data 论文相关联,在一个额外的维度上创建多个数据框(就像您在以前版本的 pandas 中使用面板一样)似乎符合 Wickham 在您引用的部分中讨论的“高维数组”的条件。

我希望这有帮助!

一般来说,整洁的数据是指一个表

  • 每行一个观察值(样本)
  • 每列一个特征(属性)

历史上,数据一直是这样记录在分类帐、电子表格、csv 等中的。整齐的数据更容易解释和检查。更重要的是,现代 CPU/GPU 通过矢量化可以非常有效地处理整齐的数据,这就是为什么像 pandas、excel 等包这样存储数据的原因。

不过,一个有趣的事实是,神经网络通常将矩阵数据集的转置作为输入 - 将其视为将数据集横向翻转(因此行是列,列是行)并将其输入神经网络。

当然,这也有例外。想想图像数据、声音数据、某些形式的文本数据;将这些中的每一个存储在标准行/列表中是不可行的,这就是为什么它们通常以其他格式(jpeg、txt 等)存储的原因。当然,您可以转换这些类型的数据,使它们看起来更像“整洁数据”,例如将图像的所有像素矢量化,这样您就可以将 28x28 图像转换为具有 784 列的向量;现在一行是一个图像,一列是一个特征(在这种情况下是一个像素位置)。