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

python - 存储在 HDFStore 后取回 nan 值

我使用以下代码在/中存储了一个包含大量NaN值的大数据集:HDFStorepythonpandas

然后我想将第一列加载为numpy数组,所以我有:

问题是我得到了一个没有任何初始NaN值的小数组,因为当我将数据存储在存储中时,它有点“忘记”这些NaN值,只保留非NaN值及其索引。如何取回具有初始NaN值的数组?

0 投票
1 回答
5533 浏览

hadoop - 使用 Hadoop 存储股票市场报价数据


我很高兴学习 Hadoop 及其周围的各种项目,目前我正在考虑两种不同的策略来构建一个系统来存储大量市场报价数据,我刚刚开始使用 Hadoop/HDSF和 HBase,但希望有人可以帮助我种下系统种子,以后我不必再使用这些技术进行垃圾处理。下面是我的系统和要求的概述,其中包含一些查询和数据使用用例,最后是我目前从我读过的小文档中对最佳方法的思考。这是一个开放式问题,我很乐意喜欢任何有见地的答案并接受最好的答案,请随时对以下任何或所有观点发表评论。- 邓肯·克雷布斯

系统要求 - 能够利用数据存储对系统进行历史回溯测试、历史数据图表和未来数据挖掘。一旦存储,数据将始终是只读的,需要快速数据访问,但在回测时不是必须的。

静态架构- 非常简单,我想从提要中捕获 3 种类型的消息:

  1. 时间戳,包括日期、日期、时间
  2. 报价包括Symbol,timestamp,ask,askSize,bid,bidSize,volume....(约40列数据)
  3. 交易包括Symbol,timestamp,price,size,exchange....(约20列数据)

数据插入用例- 来自实时市场数据流或通过代理 API 查找

数据查询用例- 下面演示了我想如何从逻辑上查询我的数据。

  1. Get me all Quotes,Trades,Timestamps for GOOG on 9/22/2014
  2. Get me all Trades for GOOG,FB BEFORE 9/1/2014 AND AFTER 5/1/2014
  3. Get me the number of trades for these 50 symbols for each day over the last 90 days.

圣杯- MapReduce 可以用于以下这些用例吗?

  1. 通过分布式代理从原始市场数据生成元数据。例如,编写一个作业,计算存储在数据库中的所有股票和所有交易时段的平均交易量,间隔为 1 分钟。创建作业以让每个股票/会话都有一个代理,我告诉它应该为哪个股票和会话计算这个值。(这是 MapReduce 能做的吗???)

  2. 在代理的类路径上,我可以添加我自己的 util 代码,以便上面的用例可以将其值发布到中央存储库或消息服务器中吗?我可以将代理部署为 OSGI 捆绑包吗?

  3. 为每天早上在盘前交易前执行的不同类型的指标和分数创建不同类型的代理?

高频交易
如果有人能分享一些在高频交易系统环境中使用 Hadoop 的经验,我也很感兴趣。刚接触这项技术,我最初的感觉是 Hadoop 可以很好地存储和处理大量历史分时数据,如果有人使用它进行实时交易,我有兴趣了解更多!- 邓肯·克雷布斯

0 投票
0 回答
300 浏览

pandas - 获取均值的正确方法,从 pandas 的大数据集中描述值

对于 hdf_read,我得到“数组太大”,这可能意味着在将它们组合在一起之前,我必须遍历文件并以块的形式计算结果;我想知道是否有一种自动化的方式来做到这一点?或者也许是我不知道的更好的方法?

任何建议都会非常有帮助!

现在我使用以下内容加载文件:

其次是计算平均值:

在 HDF 文件(blosc 中 812MB)上运行它,产生

pd.show_versions():

ptdump: 这里

0 投票
2 回答
977 浏览

pandas - Pandas HDFStore:查询不匹配字符串的速度很慢

我的问题是,当我尝试查找 DataFrame 中不包含的字符串(存储在 hdf5 文件中)时,完成查询需要很长时间。例如:

我有一个包含 2*10^9 行的 df。它存储在 HDF5 文件中。我有一个名为“code”的字符串列,它被标记为“data_column”(因此它被索引)。

当我搜索数据集中存在的代码( store.select('df', 'code=valid_code') )时,大约需要 10 秒才能获得 70K 行。

但是,当我搜索数据集中不存在的代码( store.select('df', 'code=not_valid_code') )时,大约需要 980 秒才能获得查询结果(0 行)。

我像这样创建商店: store = pd.HDFStore('data.h5', complevel=1, complib='zlib') 第一个附加是这样的: store.append('df', chunk, data_columns=['code '],预期行=2318185498)

这种行为是正常的还是有什么问题?

谢谢!

PS:这个问题可能与this other question有关

更新:

按照 Jeff 的建议,我复制了他的实验,并在 Mac 上得到了以下结果。这是生成的表:

这些是结果:

由于差异可能不够大,我尝试了相同的实验,但使用了更大的数据框。另外,我在另一台机器上做了这个实验,一台使用 Linux。

这是代码(我只是将原始数据集乘以 10):

这是表格:

这些是文件:

这些是结果:

这些是我的 Pandas 和 Pytables 版本:

虽然我很确定这个问题与 Pandas 无关,因为我在只使用 Pytables 而没有 Pandas 时观察到类似的行为。

更新 2:

我已经切换到 Pytables 3.0.0 并且问题得到了解决。这是使用与 Pytables 3.1.1 生成的相同文件。

0 投票
1 回答
1081 浏览

python - Pandas HDFStore - 从多个表中获取最后一条记录

我有大量的数据帧通过 Pandas 导出到一系列 HDFStore 文件中。我需要能够根据需要快速提取每个数据帧的最新记录。

设置:

我在每个 HDF 文件中存储了大约 100 个数据帧,并且有大约 5000 个文件要运行。HDFStore 中的每个数据帧都使用 DateTimeIndex 进行索引。

对于单个文件,我目前正在遍历HDFStore.keys(),然后使用tail(1)如下方式查询数据框:

有没有更好的方法来做到这一点,也许是HDFStore.select_as_multiple?即使选择最后一条记录而不将整个数据框拉到尾部也可能会大大加快速度。如何才能做到这一点?

0 投票
1 回答
2613 浏览

python-2.7 - 在 pandas 中查看 hdf5 文件中的行数

我想知道是否有一种方法可以轻松、快速且不加载整个文件,获取使用 pandas 创建的 hdf5 文件中的行数和 pandas?

先感谢您!

0 投票
2 回答
92 浏览

python-2.7 - 在 Pandas 中合并 DataFrame 列的正确方法?

目前我做的是:

虽然这可行,但我想知道是否有其他更快的内置方法来处理这种情况?我这样做的原因是因为在不同的数据集中,我有不同数量的具有相关信息的列,我想将它们合并到一列/行中,以便我可以对它们进行频率/平均值计算。

再次感谢大家的支持!

0 投票
0 回答
80 浏览

sql - pandas HDFStore: sql "GROUP BY" 等效项

我正在尝试翻译以下 SQL 查询以在大型 pandas HDFStore 上运行:

实现这一点的最佳方法是什么?我在col1, col2,上有索引col3

0 投票
1 回答
1210 浏览

python - Pandas HDFStore:更改索引的 dtype

使用HDFStore.append时是否存在控制用于存储数据帧索引的数据类型的方法?

似乎熊猫索引总是以 64 位存储在 hdf5 文件中。我想提高存储效率并减小索引列的大小。

我有一个唯一的 3 列多索引,将它们保存为 uint64 索引在我的应用程序中是一种巨大的空间浪费:

给定以下数据框

只需在结果df.set_index(['indA', 'indB', 'indC'])之前设置,并将其存储为hdf5 文件。HDFStore.appendindAindBindCInt64Col

不设置 pandas 索引并指定 pytables 数据列:

indA,indBindC与其原始 dtypes 一起存储,但是附加Int64Col存储在 hdf5 文件中。

这并没有真正的帮助:通过存储在原始 dtypes 中,我为三ind列保存/保存 56 位。然而,额外的(多余的)索引列需要 64 位......

有任何想法吗?

0 投票
1 回答
211 浏览

select - 通过使用 HDFStore 比较列来选择行

如何通过使用 Pandas 比较 hdf5 文件中的两列来选择一些行?hdf5 文件太大而无法加载到内存中。例如,我想选择 A 列和 B 列相等的行。数据框保存在文件“mydata.hdf5”中。谢谢。

这行不通。我知道 store.select('mydf',where='A==12') 会起作用。但我想比较 A 列和 B 列。示例数据如下所示: