性能:使用 pandas 列出 hdf5 文件中的所有密钥

Performance: list all keys from hdf5 file with pandas

获取hdf5文件中所有存在的密钥需要这么长时间是否正常?

代码示例:

start = time.time()
store = pd.HDFStore(filepath)
print(time.time() - start)
0.0

start = time.time()
a = store.keys()
print(time.time() - start)
23.874846696853638

len(a) 
80

start = time.time()
store.select(key="/data/table1") # the next table would be /data/table2
print(time.time() - start)

0.062399864196777344

所有键都是'tables'(即不固定)。 文件中大约有 80 个密钥。

.h5 文件的整个大小为 348 MB。每个 table 有大约。大小相同(加载到 pandas.DataFrame 后)2.6 MB。

pandas v.0.20.1

tables v.3.2.2.

我想知道密钥层次结构是否有问题:全部在 data/table[X] 中而不是直接在 table[X] 中?

我也有同样的问题。看来原因与表检查每个节点值以创建键列表的方式有关。我已将其提升至 pandas dev.

如果您想检查商店中是否有钥匙,那么

store.__contains__(key)

会完成这项工作,而且速度要快得多。

https://github.com/pandas-dev/pandas/issues/17593