我正在构建一个存储财务数据的数据库(特别是选项链)。
我每天检索每个交易日的数据,即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分钟!
我是如何构建文件的,或者我可以做些什么来加快这个过程?