我正在尝试使用不同的熊猫友好型存储方案来存储刻度数据。到目前为止,最快的(就读写而言)是使用具有 blosc 压缩和“固定”格式的 HDFStore。
store = pd.HDFStore(path, complevel=9, complib='blosc')
store.put(symbol, df)
store.close()
我按股票代码进行索引,因为这是我常用的访问模式。但是,这种方案为每个符号增加了大约 1 MB 的空间。也就是说,如果一只微型股票的数据框只包含当天的一千个刻度,则该文件的大小将增加一兆字节。因此,对于大量小型股票来说,.h5
文件很快就会变得笨拙。
有没有办法保持 blosc/fixed 格式的性能优势但减小尺寸?我尝试过“表格”格式,每个符号需要大约 285 KB。
store.append(symbol, df, data_columns=True)
但是,这种格式的读写速度要慢得多。
如果有帮助,这是我的数据框的样子:
exchtime datetime64[ns]
localtime datetime64[ns]
symbol object
country int64
exch object
currency int64
indicator int64
bid float64
bidsize int64
bidexch object
ask float64
asksize int64
askexch object
blosc 压缩本身工作得很好,因为生成的.h5
文件每行只需要 30--35 个字节。所以现在我主要关心的是减少 HDFStore 中每个节点的大小损失。