本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/51025044 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
1,使用压缩
hdf5在存储的是支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的。
使用压缩可以提磁盘利用率,节省空间。
开启压缩也没有什么劣势,只会慢一点点。
压缩在小数据量的时候优势不明显,数据量大了才有优势。
同时发现hdf读取文件的时候只能是一次写,写的时候可以append,可以put,但是写完成了之后关闭文件,就不能再写了,
会覆盖。
2,使用压缩方式写文件
import numpy as np
import pandas as pd
#生成9000,0000条数据,9千万条
a = np.random.standard_normal((90000000,4))
b = pd.DataFrame(a)
#普通格式存储:
h5 = pd.HDFStore('/data/stock/test_s.h5','w')
h5['data'] = b
h5.close()
#压缩格式存储
h5 = pd.HDFStore('/data/stock/test_c4.h5','w', complevel=4, complib='blosc')
h5['data'] = b
h5.close()
对比文件大小:
-rw-r--r--. 1 root root 2.7G Mar 31 11:20 test_c4.h5
-rw-r--r--. 1 root root 3.4G Mar 31 11:19 test_s.h5
省了700mb空间。
3,总结
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/51025044 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
pandas官网有CookBook。
http://pandas.pydata.org/pandas-docs/stable/cookbook.html
对比CSV文件格式,hdf5支持按照key寻找,可以直接把股票id作为key寻找。比较hdf5是结构化的数据格式,而csv还是个文本。
比数据库方式效果高多了,读写很快。
对于金融,股票系统。还是直接读写文件来的方便。
按照日期和股票id进行两个分区。而且后期迁移的时候直接可以迁移到hadoop 上面,也非常容易呢。