对原版做了代码速度优化,优化包括:
1. 原版:
def get_hl_stock(initial_list, date):
df = get_price(initial_list, end_date=date, frequency='daily', fields=['close','high_limit'], count=1, panel=False, fill_paused=False, skip_paused=False)
df = df.dropna() #去除停牌
df = df[df['close'] == df['high_limit']]
hl_list = list(df.code)
return hl_list
优化后:
def get_hl_stock(initial_list, date):
df = get_price(initial_list, end_date=date, frequency='daily', fields=['close','high_limit'], count=1, panel=False, fill_paused=False, skip_paused=False)
df = df.dropna() #去除停牌
hl_list = df[df['close'] == df['high_limit']].code.tolist()
return hl_list
原版:
def get_continue_count_df(hl_list, date, watch_days):
df_list = []
for d in range(2, watch_days+1):
HLC = get_hl_count_df(hl_list, date, d)
CHLC = HLC[HLC['count'] == d]
df_list.append(CHLC)
ccd = pd.concat(df_list) if df_list else pd.DataFrame()
if not ccd.empty:
stock_list = ccd.index.unique()
ccd_list = []
for s in stock_list:
tmp = ccd.loc[[s]]
if len(tmp) > 1:
M = tmp['count'].max()
tmp = tmp[tmp['count'] == M]
ccd_list.append(tmp)
if ccd_list:
ccd = pd.concat(ccd_list)
ccd.sort_values(by='count', ascending=False, inplace=True)
return ccd
修改后:
def get_continue_count_df(hl_list, date, watch_days):
df_list = []
for d in range(2, watch_days+1):
HLC = get_hl_count_df(hl_list, date, d)
CHLC = HLC[HLC['count'] == d]
df_list.append(CHLC)
ccd = pd.concat(df_list) if df_list else pd.DataFrame()
if not ccd.empty:
ccd = ccd.sort_values(by='count', ascending=False).groupby(level=0).head(1)
return ccd
2024-05-03