Python提高了HDF5文件的读取速度

时间:2018-03-03 10:43:42

标签: python pandas hdf5 hdfstore

我正在构建一个存储财务数据的数据库(特别是选项链)。

我每天检索每个交易日的数据,即5d /周或250d /年。我这样做了300个代码,数据库正在以每天150Mb的速度增长,到目前为止达到了9Gb。

数据以pandas数据帧的形式出现。

我想使用HDF5格式并在每个交易日使用组构建文件,然后在代码中进一步分支以及进一步“调用”/“放置”(选项行话)

这是编写文件的代码片段,我使用pd.HDFStore和for循环通过代码

db = pd.HDFStore('Database.h5')
group = c_year + '/' + c_month + '/' + c_day + '/'# Create main group from current day

for i in tickers['Symbol']:

    db.put(group + i + '/Call', data, format = 'table', append = True, data_columns = True)

每个交易日编写文件的速度很慢,但我得出结论,这是关于使用pandas datareader检索数据

随后,我需要检索整个数据库,将其转换为减少的pandas数据帧以进行数据争用。

以下是仅为“调用”读取* .h5文件的代码,另一个用于循环显示1年代回溯期间所有日期的代码

for i in tickers['Symbol']:

    for date in datelist(dt.date.today() - timedelta(days = 365), dt.date.today(), timedelta(days=1)):#set number of lookback days in accordance to last day of database retrieve
        g_year = str(date.year)  # Get group year
        g_month = months[date.month]  # Get group month
        g_day = str(date.day)  # Get group day
        group = '/' + g_year + '/' + g_month + '/' + g_day + '/'       

        try:
            key_value = group + i            
            calls = pd.read_hdf(filename, key = key_value + '/Call')

这可能变得非常缓慢,我注意到慢速会随着我正在检索的代码数呈指数增长,这使得这个过程无用。

当我检索一个自动收报机时,只需花费15秒,但从70到80的自动收费机构需要50分钟!

我是如何构建文件的,或者我可以做些什么来加快这个过程?

0 个答案:

没有答案