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

我每天检索每个交易日的数据,即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分钟!

我如何构建文件或我可以做些什么来加快这个过程有什么问题?