问题标签 [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 回答
5913 浏览

python - Pandas HDFStore 从内存中卸载数据帧

好的,我正在尝试使用 pandas 将大约 30GB 的 csv 文件加载到 HDFStore 中,其中包含 4000 万多行和 150 多列。大多数列是字符串,然后是数字和日期。

我以前从未真正使用过 numpy、pandas 或 pytables,但在 R 中使用过数据框。

我目前只是将大约 20000 行的示例文件存储到 HDFStore。当我尝试从 HDFStore 读取表时,表被加载到内存中,内存使用量增加了 ~100MB

然后我删除包含 DataFrame 的变量:

此时内存使用量减少了约 5MB

如果我再次将数据加载到 g using g=f['df'],内存使用量会再增加 100MB

只有当我真正关闭窗口时才会进行清理。

数据的组织方式,我可能会将数据分成单个表,最大表大小约为 1GB,可以放入内存中,然后一次使用一个。但是,如果我无法清除内存,这种方法将不起作用。

关于如何实现这一目标的任何想法?

0 投票
1 回答
1980 浏览

python - 使用 where 通过索引从 HDFStore 中选择行

我有一个数据框,其中 user_ids 存储为 HDFStore 中的索引 frame_table。此 HDF 文件中还有另一个表格,其中包含用户执行的操作。我想抓取 1% 的用户采取的所有行动。程序如下:

现在我想返回并从与 df_user_id 索引相同的 frame_tables 中获取描述这些用户所采取的操作的所有附加信息。根据这个例子这个问题,我做了以下事情:

这只是提供了一个空数据框。事实上,如果我复制并粘贴上一个 pandas 文档链接中的示例,我也会得到一个空数据框。Term最近的熊猫有什么变化吗?我在熊猫 0.12 上。

我不受任何特定解决方案的约束。只要我可以从 df_id 表中查找 hdfstore 索引(速度很快),然后直接从其他帧表中提取这些索引。

0 投票
0 回答
185 浏览

python - 从 HDFStore 目录错误中恢复

我制作了一个新的 HDFStore 并在其中放入了一些东西。

我重新启动 IPython 并且“错误地”在这种情况下,我尝试从错误的目录打开我的商店。

哎呀!意识到我的错误,我cd到正确的目录并在正确的目录中重新分配store变量:

我的问题:这里发生了什么?为什么在我不小心尝试从错误的目录访问商店后,我无法从正确的目录打开商店?下面,当我打开文件而没有先在错误的目录中打开时,你可以看到它实际上就在那里,一切都很好。

这是某种上下文问题吗?我不知所措。这个粗心的错误经常发生在我身上,以至于我进入了蜂巢。谢谢!


更新

我确实认为这是 HDFStore 的一个错误。似乎cd工作正常。见证这与 CSV 一起正常工作:

按照 Jeff 的建议,我尝试!cd揭示了一个意外的 IPython 行为:

0 投票
2 回答
179 浏览

hadoop - 如何在单个 Hadoop 节点上写入多条记录

我需要 Hadoop 问题的帮助。
在我的 Java 系统中,我有一个创建n条记录的函数。显然,每条记录都是要写入 Hadoop 文本文件中的一行。

问题是:
如何将所有n条记录保存在同一个 Hadoop 节点中?换句话说,我希望将n条记录视为唯一记录,以确保如果这些记录之一(或其副本之一)在节点上,那么其他n-1条记录当然也在同一个节点。

例如,假设我的函数创建:

当我在 Hadoop 的文本文件中附加这三个记录(三行)时,可能会发生 record1 到 node1,record2 到 node2,record3 到 node3。我想知道是否有办法确保所有三个记录都存储在同一个节点上,例如 node2,并且它们不会存储在不同的节点上。

感谢您的关注。

0 投票
1 回答
459 浏览

pandas - 检查 pandas HDFStore 中的 PyTables 节点是否为表格

是否有首选方法来检查 pandas HDFStore 中的 PyTables 节点是否为表格?这可行,但NoSuchNodeError似乎不是 API 的一部分,所以也许我不应该依赖它。

0 投票
1 回答
2022 浏览

python - 在 hdfstore 中使用 OR 选择 pandas

我知道如何在 pandas HDFStore.select 中使用 AND 类型的查询,但是如何使用 OR?

例如,我有以下代码

然后我可以使用以下内容从该数据集中部分加载

或者

显然,它使用 AND 来组合我提供的所有标准,例如 ('A > 0' AND 'B > 0' AND 'index >= 20131017')

我的问题是,如何使用OR,比如返回的结果是('A > 0' OR 'B > 0')?

谢谢你的帮助

0 投票
2 回答
1293 浏览

pandas - HDFStore 术语记忆有效的方法来检查列表中的成员

我有一个我试图从中选择的熊猫 HDFStore。我想在大 np.array 中选择具有 id 的两个时间戳之间的数据。以下代码有效,但仅在查询列表中的成员资格时才占用过多内存。如果我使用 datetimeindex 和范围,内存占用将减少 95%。

在 HDFStore 中是否有更高效的内存方式来执行此操作?我应该将索引设置为“sec_id”吗?(我也可以使用 chunksize 选项并自己连接,但这似乎有点 hack。)

编辑:

hdfstore 是由 pd.HDFStore 创建一个数据帧并存储这样的。我之前犯了一个错误

根据要求,这里是该表的 ptdump:https ://gist.github.com/MichaelWS/7980846 ,这里是 df:https ://gist.github.com/MichaelWS/7981451

0 投票
1 回答
2249 浏览

python - 使用 HDFStore 文件的线程和异常安全方式

以下代码片段:

响应web请求而执行,因此它可能同时在多个线程上执行。也有可能在调用 store.close 之前中断执行。

我以不可重现的方式遇到了一些麻烦(HDFStore 库中的异常,或返回的空数据)。

使此代码线程安全并确保文件在异常时正确关闭的正确方法是什么?

通过一些调查,我发现 HDFStore 具有打开文件的缓存机制......也许这可能是问题?

0 投票
2 回答
1825 浏览

python - 如何减少 HDFStore 的大小开销?

我正在尝试使用不同的熊猫友好型存储方案来存储刻度数据。到目前为止,最快的(就读写而言)是使用具有 blosc 压缩和“固定”格式的 HDFStore。

我按股票代码进行索引,因为这是我常用的访问模式。但是,这种方案为每个符号增加了大约 1 MB 的空间。也就是说,如果一只微型股票的数据框只包含当天的一千个刻度,则该文件的大小将增加一兆字节。因此,对于大量小型股票来说,.h5文件很快就会变得笨拙。

有没有办法保持 blosc/fixed 格式的性能优势但减小尺寸?我尝试过“表格”格式,每个符号需要大约 285 KB。

但是,这种格式的读写速度要慢得多。

如果有帮助,这是我的数据框的样子:

blosc 压缩本身工作得很好,因为生成的.h5文件每行只需要 30--35 个字节。所以现在我主要关心的是减少 HDFStore 中每个节点的大小损失。

0 投票
0 回答
891 浏览

python - pandas、HDFstore 和通过加载/卸载周期的内存使用情况

我很乐意使用 pandas 来存储和操作实验数据。通常,我选择 HDF 格式(我不掌握)pd.HDFstore来保存东西。

我的数据框越来越大,需要一些内存经济性

我阅读了相关问题中链接的一些指南,尽管我无法实现可持续的内存消耗,例如在我的以下典型任务中:

显然我在卸载阶段一直失败。


因此,我希望您考虑以下实验。

(从新启动的内核(在 ipython 笔记本中,如果重要的话))

统计数据(来自top):

然后,在同一个内核中,我运行

统计:

调用 adel detection_DB对内存没有任何影响(CPU 使用率会持续高 5 秒)。

类似地,调用

没有任何相关的区别。

我补充说,值得一提的是,重复之前的调用,我到达时占用了大约 20GB(并且没有加载的对象可以玩)。


任何人都可以解释一下吗?

之后我怎样才能达到~0GB(左右)占用del