之所以使用bcolz,看中了他的高压缩率,数字类型数据压缩率很高。
比如说,证券行业的历史数据,数据内容包括时间,价格等信息,都是数字类型。对比csv文本文件来说,可以压缩到之前的1/4.
举个栗子
这是某一证券的分钟历史k线文本,占用空间45M

文件格式类型如下,都是数字

接下来看使用carray 存储的结果 11.4M


最后献上代码
#arr 为numply 数组
carr = bcolz.carray(arr, chunklen=10 * 1024,expectedlen=10*1024,rootdir="D:/quote/000001.XSHE1",cparams=bcolz.cparams(quantize=1))
#存磁盘
carr.flush()
过程:csv->numpy->bcolz.carray
函数中chunklen 为存储块长度,类似数据文件的页,expectedlen 预期长度,设置之后方便更快速的存取数据,
quantize 是压缩因子,官方提供了1,2,3三种压缩,经测试后,quantize=1压缩率最高。
附上例子https://github.com/leaout/curs/blob/master/curs/data_source/buddle_tool.py
博客详细介绍了bcolz,因其对数字类型数据有高压缩率而被使用。以证券行业历史数据为例,对比csv文本文件,使用bcolz的carray存储可将数据压缩到之前的1/4。还给出了存储过程及代码示例,指出设置相关参数可更快速存取数据。
1033

被折叠的 条评论
为什么被折叠?



