如何从一些本地的csv去获取数据? 给个栗子
发布于 4 个月前 作者 yutiansut 324 次浏览 来自 文档
# 先写get 1个code  1个day
def QA_fetch_stock_l2data(code, date):
    year = date[0:4]
    month = date[5:7]
    day = date[8:10]
    mk = 'SH' if code[0]=='6' else "SZ"
    data = pd.read_csv('/data/{}/{}/{}/{}{}.csv'.format(year,month,day, mk, code), index_col=[0])
    return data.assign(datetime= pd.to_datetime(data.datetime), code =data.code.apply(lambda x: QA.QA_util_code_tostr(x))).set_index(['datetime', 'code'])
# 再写get 1个code  一段时期
def QA_fetch_stock_l2data_adv(code, start, end):
    time_gap = QA.QA_util_get_trade_range(start, end)
    return pd.concat([QA_fetch_stock_l2data(code, date) for date in time_gap], sort=False)
# 重新改写get 任意个code  一段时期	
def QA_fetch_stock_l2data_adv(code, start, end):
    
    codes = code if isinstance(code, list) else QA.QA_util_code_tolist(code)
    time_gap = QA.QA_util_get_trade_range(start, end)
    return pd.concat([QA_fetch_stock_l2data(code, date) for date in time_gap for code in codes],sort=False).sort_index()
	
# 再对于时间日期进行一些处理 让他支持分钟筛选

def QA_fetch_stock_l2data_adv(code, start, end):
    
    codes = code if isinstance(code, list) else QA.QA_util_code_tolist(code)
    time_gap = QA.QA_util_get_trade_range(start, end)
    return pd.concat([QA_fetch_stock_l2data(code, date) for date in time_gap for code in codes],sort=False).sort_index().loc[(slice(start, end), slice(None)), :]
	
	

以上的教程教会了你从任意来源的一个改写方法 里面的很多内置函数 可以自己仔细理解一下:

  • 如何快速挑出 从开始-结束的所有交易日 ? -》 QA.QA_util_get_trade_range(start, end)
  • 如何快速让code同时支持单个code和多个code的情况? -》 QA.QA_util_code_tolist(code)
  • code如何标准化?(如 002400 从csv里面读出来就是2400) ? =》 data.code.apply(lambda x: QA.QA_util_code_tostr(x)
2 回复

mark 一下,认真体会

回到顶部