2

我最近开始学习 PyTables,发现它非常有趣。我的问题是:

  • 当涉及到庞大的数据集时,PyTables 相对于数据库的基本优势是什么?
  • 这个包的基本目的是什么(我可以在 NumPy 和 Pandas 中做同样的结构,那么 PyTables 有什么大不了的)?
  • 它对大数据集的分析真的有帮助吗?任何人都可以在任何示例和比较的帮助下详细说明吗?

谢谢你们。

4

1 回答 1

20

当涉及到庞大的数据集时,PyTables 相对于数据库的基本优势是什么?

实际上,它一个数据库。当然,它是一个分层数据库,而不是像 1 级键值数据库那样dbm(显然不那么灵活)或像关系数据库那样sqlite3(更强大,但更复杂)。

ndarray但是相对于非特定于数字的数据库的主要优势与 numpy相对于普通 Python的优势完全相同list。它针对执行大量矢量化数字运算进行了优化,因此如果您正在使用它,它将花费更少的时间和空间。

这个包的基本目的是什么

引用首页的第一行或者,如果您愿意,可以引用 FAQ的第一行):

PyTables 是一个用于管理分层数据集的包,旨在高效、轻松地处理大量数据。

还有一个页面列出了MainFeatures,链接在首页顶部附近。

(我可以在 NumPy 和 Pandas 中进行相同的结构化,那么 PyTables 有什么大不了的)?

真的吗?您可以在只有 16GB RAM 的机器上处理 numpy 或 pandas 中的 64GB 数据吗?还是32位机器?

不,你不能。除非您将数据拆分为一组单独的数据集,然后根据需要加载、处理和保存——但这会变得更加复杂,速度也会慢得多。

这就像问为什么你需要 numpy,而你可以只用普通的 Python 列表和迭代器来做同样的事情。当你有一个包含 8 个浮点数的数组时,纯 Python 非常棒,但当你有一个 10000x10000 的浮点数数组时就不行了。当你有几个 10000x10000 数组时,numpy 很棒,但当你有十几个互连的数组时,它的大小不超过 20GB。

它对大数据集的分析真的有帮助吗?

是的。

任何人都可以在任何示例的帮助下详细说明...</p>

是的。与其复制这里的所有示例,不如直接查看文档首页上的简单示例、源代码树中的大量示例、实际使用案例的链接,点击前面两次文档页面等?

如果你想让自己相信 PyTables 的有用性,可以举任何例子并将其扩展到 32GB 的数据量,然后尝试弄清楚如何在 numpy 或 pandas 中做同样的事情。

于 2013-05-21T01:37:20.523 回答