问题标签 [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.
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,可以放入内存中,然后一次使用一个。但是,如果我无法清除内存,这种方法将不起作用。
关于如何实现这一目标的任何想法?
python - 使用 where 通过索引从 HDFStore 中选择行
我有一个数据框,其中 user_ids 存储为 HDFStore 中的索引 frame_table。此 HDF 文件中还有另一个表格,其中包含用户执行的操作。我想抓取 1% 的用户采取的所有行动。程序如下:
现在我想返回并从与 df_user_id 索引相同的 frame_tables 中获取描述这些用户所采取的操作的所有附加信息。根据这个例子和这个问题,我做了以下事情:
这只是提供了一个空数据框。事实上,如果我复制并粘贴上一个 pandas 文档链接中的示例,我也会得到一个空数据框。Term
最近的熊猫有什么变化吗?我在熊猫 0.12 上。
我不受任何特定解决方案的约束。只要我可以从 df_id 表中查找 hdfstore 索引(速度很快),然后直接从其他帧表中提取这些索引。
python - 从 HDFStore 目录错误中恢复
我制作了一个新的 HDFStore 并在其中放入了一些东西。
我重新启动 IPython 并且“错误地”在这种情况下,我尝试从错误的目录打开我的商店。
哎呀!意识到我的错误,我cd
到正确的目录并在正确的目录中重新分配store
变量:
我的问题:这里发生了什么?为什么在我不小心尝试从错误的目录访问商店后,我无法从正确的目录打开商店?下面,当我打开文件而没有先在错误的目录中打开时,你可以看到它实际上就在那里,一切都很好。
这是某种上下文问题吗?我不知所措。这个粗心的错误经常发生在我身上,以至于我进入了蜂巢。谢谢!
更新
我确实认为这是 HDFStore 的一个错误。似乎cd
工作正常。见证这与 CSV 一起正常工作:
按照 Jeff 的建议,我尝试!cd
揭示了一个意外的 IPython 行为:
hadoop - 如何在单个 Hadoop 节点上写入多条记录
我需要 Hadoop 问题的帮助。
在我的 Java 系统中,我有一个创建n条记录的函数。显然,每条记录都是要写入 Hadoop 文本文件中的一行。
问题是:
如何将所有n条记录保存在同一个 Hadoop 节点中?换句话说,我希望将n条记录视为唯一记录,以确保如果这些记录之一(或其副本之一)在节点上,那么其他n-1条记录当然也在同一个节点。
例如,假设我的函数创建:
当我在 Hadoop 的文本文件中附加这三个记录(三行)时,可能会发生 record1 到 node1,record2 到 node2,record3 到 node3。我想知道是否有办法确保所有三个记录都存储在同一个节点上,例如 node2,并且它们不会存储在不同的节点上。
感谢您的关注。
pandas - 检查 pandas HDFStore 中的 PyTables 节点是否为表格
是否有首选方法来检查 pandas HDFStore 中的 PyTables 节点是否为表格?这可行,但NoSuchNodeError
似乎不是 API 的一部分,所以也许我不应该依赖它。
python - 在 hdfstore 中使用 OR 选择 pandas
我知道如何在 pandas HDFStore.select 中使用 AND 类型的查询,但是如何使用 OR?
例如,我有以下代码
然后我可以使用以下内容从该数据集中部分加载
或者
显然,它使用 AND 来组合我提供的所有标准,例如 ('A > 0' AND 'B > 0' AND 'index >= 20131017')
我的问题是,如何使用OR,比如返回的结果是('A > 0' OR 'B > 0')?
谢谢你的帮助
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
python - 使用 HDFStore 文件的线程和异常安全方式
以下代码片段:
响应web请求而执行,因此它可能同时在多个线程上执行。也有可能在调用 store.close 之前中断执行。
我以不可重现的方式遇到了一些麻烦(HDFStore 库中的异常,或返回的空数据)。
使此代码线程安全并确保文件在异常时正确关闭的正确方法是什么?
通过一些调查,我发现 HDFStore 具有打开文件的缓存机制......也许这可能是问题?
python - 如何减少 HDFStore 的大小开销?
我正在尝试使用不同的熊猫友好型存储方案来存储刻度数据。到目前为止,最快的(就读写而言)是使用具有 blosc 压缩和“固定”格式的 HDFStore。
我按股票代码进行索引,因为这是我常用的访问模式。但是,这种方案为每个符号增加了大约 1 MB 的空间。也就是说,如果一只微型股票的数据框只包含当天的一千个刻度,则该文件的大小将增加一兆字节。因此,对于大量小型股票来说,.h5
文件很快就会变得笨拙。
有没有办法保持 blosc/fixed 格式的性能优势但减小尺寸?我尝试过“表格”格式,每个符号需要大约 285 KB。
但是,这种格式的读写速度要慢得多。
如果有帮助,这是我的数据框的样子:
blosc 压缩本身工作得很好,因为生成的.h5
文件每行只需要 30--35 个字节。所以现在我主要关心的是减少 HDFStore 中每个节点的大小损失。
python - pandas、HDFstore 和通过加载/卸载周期的内存使用情况
我很乐意使用 pandas 来存储和操作实验数据。通常,我选择 HDF 格式(我不掌握)pd.HDFstore
来保存东西。
我的数据框越来越大,需要一些内存经济性。
我阅读了相关问题中链接的一些指南,尽管我无法实现可持续的内存消耗,例如在我的以下典型任务中:
显然我在卸载阶段一直失败。
因此,我希望您考虑以下实验。
(从新启动的内核(在 ipython 笔记本中,如果重要的话))
统计数据(来自top
):
然后,在同一个内核中,我运行
统计:
调用 adel detection_DB
对内存没有任何影响(CPU 使用率会持续高 5 秒)。
类似地,调用
没有任何相关的区别。
我补充说,值得一提的是,重复之前的调用,我到达时占用了大约 20GB(并且没有加载的对象可以玩)。
任何人都可以解释一下吗?
之后我怎样才能达到~0GB(左右)占用del
?