还在用CSV保存股票数据吗(股票数据如何储存)__景合财经知识网_景合财经景合财经

景合财经
景合财经知识网站

还在用CSV保存股票数据吗(股票数据如何储存)

股票数据如何储存

在量化交易中,我们要处理大量股票的数据,很多人是用csv来保存数据的,csv的优势是直观,但是缺点也显而易见,那就是文本文件,占用空间大。用pandas读取大量的csv文件有可能导致爆内存,内存用光后就会开始用交换空间,交换空间是硬盘上分割出来的一部分空间,这个读写速度比内存要慢几百上千倍了。

csv多占空间呢?口说无凭,下图是所有股票从2007年到2021年的1分钟数据,csv格式,看看他们占用多少空间吧

股票数据如何储存股票数据如何储存

文件内容大概是这样的

股票数据如何储存

HDF5格式

这里笔者推荐一个更省硬盘空间,读写更快,占用内存更小的格式--HDF5

HDF5格式是HDF格式的升级版,HDF格式是美国国家高级计算应用中心(National Center for Supercomputing Application)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。

关于这个格式的特点我这里不多展开,大家有兴趣可以自行搜索了解。

我们来看看把csv文件转换成hdf5文件后,他们占用的空间是多大呢?

下面分别是日k线和1分钟k线的hdf文件目录。由于我没有使用所有的股票,所以数量上稍微少了几百个股票。但是就这几百个股票也不会增加多少占用空间的。

可以看到,从2007年到现在14年的数据,3715个股票(包括10来个指数)的日K线数据只占用了517M空间,连1G都不到。3733个1分钟股票数据,占用22G。

我们来看看大盘的日K和1分钟文件大小。

打开hdf文件,可以看到里面存放了从2007年1月4日到2021年3月16日的所有1分钟数据,总共是828480行。这个文件仅仅占用15M。

股票数据如何储存

日k也是包含了从2007年1月4日到2021年3月16日的数据,每一行为一天,这个文件就更小了,才240k。

股票数据如何储存

而csv文件,仅仅2021年初到3月16日的文件,就有749k了,2020年整年的大小为4M。那么13年就有42M了。

CSV转成HDF5

csv转成hdf5很简单,我们用python来做,需要的库是pandas。代码如下:

import pandas as pd

columns = ['date', 'time', 'open','high','low','close','volume','amount']

df = pd.read_csv(PATH_TO_CSV, header=None, names=columns)

df['datetime'] = pd.to_datetime(df.date + ' ' + df.time, format='%Y-%m-%d %H:%M:%S') # 将数据类型转换成时间类型

df.set_index('datetime', inplace=True) #将date设置为index

df.drop(['date','time'],axis=1, inplace=True)

dest_file =os.path.join(ROOT_H5_1MIN, stock_code +'.h5')

df.to_hdf(dest_file, key='data', mode='w', format='table')

代码的输入是股票的1分钟数据csv文件,没有head。用逗号“,”分割,每一列数据依次是日期,时间,开盘价,最高价,最低价,收盘价,量能,金额。

股票数据如何储存

上面的代码比较简单,我就不多解释了。如果有问题,可以给我留言。

做成的h5文件如何读取呢? 还是用pandas。代码如下:

import pandas as pd

s = pd.HDFStore('sh000001.h5','r')

df = s.get('data')

s.close()

print(df)

显示的结果如下:

股票数据如何储存

怎么样?简单吧,学会了就赶紧去尝试一下吧!

笔者写文章不容易,如果觉得有用就给笔者一个赞吧~~

家电维修,空调维修,智能锁维修全国报修号码分享:可以直接拔打400-968-1665 全国各大城市均设网点。
赞(0) 打赏
欢迎转载分享:景合财经 » 还在用CSV保存股票数据吗(股票数据如何储存)
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

-景合财经

在线报修网点查询