问题标签 [hdfstore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
217 浏览

python - HDFStore:选择列是否在数组中

我有一张桌子,其中包括以下列:

现在我想选择bar具有两个值之一的那些:

但是我得到了这个异常,我暗示我不能使用“bar”作为变量。

所有变量引用必须是对轴的引用(例如“索引”或“列”)或 data_column 当前定义的引用是:索引、列

但它不是一个专栏吗?

0 投票
1 回答
1387 浏览

python - pandas.HDFStore:如何修改现有商店的“data_columns”?我想为不在数据列中的列添加索引

我使用 pandas 创建了一个大型(120GB;10 亿行)HDF5 文件。在最初创建 hdf 文件后,我像这样添加到文件中:

我故意设置 data_columns=[] 以避免在创建期间建立索引。现在我有了 HDF 文件,我想为几列添加索引(例如,columns_to_index=['A', 'B', 'C'])

不知何故,我现在确实有 ptdump data_columns:=['A'],但我不记得那是怎么发生的。(也许最初的 df 是用不同的参数编写的(我连续几天添加到 hdfstore 并且我可能已经改变了一些东西)。无论如何,无论如何,不​​管它是如何创建的,我想索引额外的列。

显然,简单地调用mystore.create_table_index('all', columns=['A', 'B', 'C'], optlevel=9, kind='full')是行不通的。我第一次运行它时,它搅动了一个小时,并在文件大小上增加了 2 GB(检查元数据显示块大小增加了),但我没有所有 3 个索引(只是“A”的索引)。如何为所有 3 列生成索引?

我还注意到 ptdump 中的这一行——对于我想要索引的项目,我有“non_index_axes”似乎令人不安:non_index_axes := [(1, ['A', 'B', 'C'])]

如果无法在 pandas 中创建索引,我将不胜感激有关如何直接在 pytables 中执行此操作的建议。(例如,我是否需要先删除任何现有索引?以及如何修改“non_index_axes”和“data_coumns”)

编辑:预期有关我的用例的问题,这是我要完成的工作的总体情况:

  1. 从 CSV 文件中读取 120 GB 的数据。每个文件代表一天的财务数据,由 100,000 行组成,每行大约有十几列。我只是将每一行按顺序存储在 HDF5 文件中。我希望这个初始阶段能够快速运行,因此我关闭了索引。目前,我在 6 秒内读取和解析每个 CSV 文件,并且如上所述存储到 HDF5 文件中只需 1.5 秒。

  2. 索引少数(不是全部)列以支持各种查询,例如获取第 1 列中具有给定字符串的所有项目以及第 2 列中特定范围内的日期。

  3. 随着时间的推移,我每天都会解析一个新的 CSV 文件并将其添加到 HDF5 文件中。我预计指数会继续更新。

  4. (根据我的访问模式,我存储行的顺序(当前,按日期)可能仍然是检索的最佳顺序。在大多数查询中,我最终可能还需要按不同的列排序,在这种情况下,我认为在解析和附加每个 CSV 文件后,我需要重新排序表格。)

目前我被困在第 2 步,生成列索引。

0 投票
1 回答
1311 浏览

python - HDF5:有没有办法重命名现有 HDF5 表中的列名?

我使用 Pandas 创建了一个大型索引 HDF5 表。我想重命名表中 12 列中的 2 列。我不希望重建/重新索引表。

这可以在不复制所有数据(140GB)的情况下完成吗?我希望文件中只有几块元数据可以用正确的命令轻松换出。

这对我来说是因为我有一些带有空格的“非自然”列名,并且在尝试运行 select 语句之前没有意识到这是一个问题。

0 投票
1 回答
885 浏览

python - 写入多个 HDF5 文件时,Windows 中打开的文件过多

我的问题是如何在编写 HDF5 文件后无限期关闭它们

我正在尝试将数据保存到 HDF5 文件 - 大约有 200 个文件夹,每个文件夹包含今年每天的一些数据。

当我在 iPython 控制台中使用带有以下代码的 pandas 检索和保存数据HDFStore时,该功能会在一段时间后自动停止(没有错误消息)。

当我尝试使用相同的脚本再次下载数据时,它显示:

[Errno 24] 打开的文件太多:...

有一些帖子建议在 Linux 中使用ulimit -n 1200来解决这个问题,但不幸的是我使用的是 Windows。

此外,我想我已经使用 withclosure 明确地关闭了文件尤其是在Method 2中。为什么 iPython 仍然将这些文件视为打开的?

我的循环如下所示:

0 投票
0 回答
636 浏览

hadoop - 如何直接在hdfs上更改块大小

我的数据已经在块大小为 256mb 的 hdfs 上。但必须将此块大小更改为 128 MB。那么如何直接在hdfs上改变块大小。

我试过了

但我的数据已经在 hdfs 上

0 投票
1 回答
1914 浏览

pandas - 如何将多个 pandas 数据帧组合到一个键/组下的 HDF5 对象中?

我正在从 800 GB 的大型 csv 文件中解析数据。对于每一行数据,我将其保存为 pandas 数据框。

现在,我想将其保存为 HDF5 格式,并像查询整个 csv 文件一样查询 h5。

到目前为止,我的方法是:

也就是说,我尝试将每个数据帧保存df到一个键下的 HDF5 中。但是,这失败了:

所以,我可以尝试先将所有内容保存到一个熊猫数据框中,即

现在存储为 HDF5 格式

但是,我认为我没有将所有 csv 行保存total_df为 HDF5 格式的 RAM/存储。

那么,如何将每个“单行”df 附加到 HDF5 中,使其最终成为一个大数据帧(如原始 csv)?

编辑:这是具有不同数据类型的 csv 文件的具体示例:

0 投票
2 回答
4291 浏览

python - HDF5 min_itemsize 错误:ValueError: Trying to store a string with len [##] in [y] column but this column has a limit of [##]!

使用后出现以下错误pandas.HDFStore().append()

我正在创建一个 pandas DataFrame 并将其附加到 HDF5 文件中,如下所示:

我收到上面的错误:“ValueError: Trying to store a string with len [150] in [values_block_0] column but this column has a limit of [127]!”

之后,我执行代码:

哪个输出

values_block_0和是什么values_block_1

所以,按照这个 StackOverflow Pandas pytable: how to specify min_itemsize of the elements of a MultiIndex,我试过了

这不起作用——现在我收到这个错误:

我究竟做错了什么?

编辑:此代码产生ValueError: min_itemsize has the key [values_block_0] which is not an axis or data_column错误filename.py

这是完整的错误:

0 投票
0 回答
816 浏览

python - PyTables 索引与 pandas HDFStore (PyTables) 索引相比如何

PyTables 库和 HDFStore 对象(基于 PyTables)都为用户提供索引。

仅对于 PyTables,我们创建一个 HDF5 文件如下(来自文档):

用户使用“Column.create_index()”索引列

例如:

对于后一种情况,用户实例化一个 HDFStore 对象,然后选择要索引的列。

在这里,我们对两列进行索引,这应该会优化我们的搜索。

两个问题:

(1)我实际上不清楚PyTables示例(第一个示例)中如何设置索引(索引)。上面没有定义列。在我看来,有三个字段:身份、身份证号码、速度。假设我想为速度和身份建立一个索引。如何做到这一点?

(2) 基于 pandas 的索引和基于 PyTables 的索引之间是否有任何基准?一个比另一个快吗?一个是否比另一个占用更多的磁盘空间(即更大的 HDF5 文件)?

0 投票
0 回答
201 浏览

python - Pandas HDF 文件大小在读写之间存在显着差异

我有一个 HDF5 文件 test1.h5 生成 py Pandas df.to_hdf("test1.h5","t") 调用。文件大小为 27M,只有一个键是 pandas 数据框。

数据框的大多数 dtypes 是 float32,带有一个 int 和 string

令我困惑的是,如果我再次将数据帧保存到另一个 HDF5 文件 test2.h5,它只有 9.7M:

是什么导致读取和写入之间的大小不同?谢谢你。

0 投票
1 回答
4172 浏览

python - 如何在 Python 中查找 HDF5 文件组/键?

假设有人给了我一个随机的 HDF5 文档。我想编写一个函数来检查使用的组/“键”是什么。

以熊猫为例HDFStore()。对于许多检索 HDF5 数据的方法,需要知道密钥,例如pandas.HDFStore.get()

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.HDFStore.get.html

如果不是先验已知的,那么检查密钥身份的最有效方法是什么?