性能:使用pandas

时间:2017-06-24 15:16:44

标签: python performance pandas hdf5 pytables

获取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

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

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

pandas v.0.20.1

表v.3.2.2。

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

1 个答案:

答案 0 :(得分:2)

我有同样的问题。看起来原因与表检查每个节点值以创建密钥列表的方式有关。我把它提到了pandas dev。

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

store.__contains__(key)

将完成工作并且速度更快。

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