def _sort(self, user_code_list: list = None, lines: int = None): # df.sort_index(by='pb', axis=0, ascending=[True]) ndf = pd.DataFrame() df = self._filter(user_ts_code_list=user_code_list) if df.empty is False: if lines is None: max_lines = int(config.max_lines) else: max_lines = lines """排序""" sort_title = config.sort_title.split('|') sort_type = config.sort_type.split('|') sort_title.append('Risk_level') sort_type.append('False') df1 = df[df['Risk_level'] == '0'].sort_values( by=sort_title, ascending=sort_type).head(max_lines) df2 = df[df['Risk_level'] == '1'].sort_values( by=sort_title, ascending=sort_type).head(max_lines) ndf = pd.concat([df1, df2], ignore_index=True) stock_fi = Util_tools.bytes_to_dataFrame( RedisBase().redis().get('stock_fi')) if stock_fi.empty: # 在线取每股净资产 for idx, row in ndf.iterrows(): sg_data = get_skData().get_stock_fi(row['ts_code']) ndf.loc[idx, 'bps'] = float(sg_data['bps']) return ndf
def _init_stock_daily_udata(): new_df = pd.DataFrame() # 股票基本分类数据 stock_base = t_util.bytes_to_dataFrame( RedisBase().redis().get('stock_base')) stock_daily = t_util.bytes_to_dataFrame( RedisBase().redis().get('stock_daily')) stock_fi = t_util.bytes_to_dataFrame(RedisBase().redis().get('stock_fi')) for index, row in stock_base.iterrows(): df = stock_daily[stock_daily['ts_code'] == row['ts_code']] if stock_fi.empty is False: bvps = stock_fi.loc[row['symbol']]['bvps'] if df.empty is False: daily_b.ts_code = str(row['ts_code']) # 股票名称 daily_b.name = str(row['name']) # 股票名称 daily_b.symbol = str(row['symbol']) # 股票名称 daily_b.industry = str(row['industry']) # 股票名称 daily_b.trade_date = str(df.loc[df.index, 'trade_date'].values[0]) # 交易日期 daily_b.close = float(df['close']) # 当日收盘价 daily_b.ts_code = str(row['ts_code']) # 股票代码 daily_b.pe = float(df['pe']) # 市盈率(总市值/净利润) daily_b.pe_ttm = float(df['pe_ttm']) # 市盈率(TTM) daily_b.pb = float(df['pb']) # 市净率(总市值/净资产) if bvps is None: daily_b.bps = float(0) # 每股净资产 else: daily_b.bps = float(bvps) # 每股净资产 data = { 'ts_code': daily_b.ts_code, 'symbol': daily_b.symbol, 'name': daily_b.name, 'industry': daily_b.industry, 'trade_date': daily_b.trade_date, 'pe': daily_b.pe, 'pe_ttm': daily_b.pe_ttm, 'pb': daily_b.pb, 'bps': daily_b.bps } add_data = pd.Series(data) """ignore_index=True,表示不按原来的索引,从0开始自动递增""" new_df = new_df.append(add_data, ignore_index=True) return new_df
daily_b.bps = float(0) # 每股净资产 else: daily_b.bps = float(bvps) # 每股净资产 data = { 'ts_code': daily_b.ts_code, 'symbol': daily_b.symbol, 'name': daily_b.name, 'industry': daily_b.industry, 'trade_date': daily_b.trade_date, 'pe': daily_b.pe, 'pe_ttm': daily_b.pe_ttm, 'pb': daily_b.pb, 'bps': daily_b.bps } add_data = pd.Series(data) """ignore_index=True,表示不按原来的索引,从0开始自动递增""" new_df = new_df.append(add_data, ignore_index=True) return new_df if __name__ == '__main__': # print(init_stock_data()) # print(init_stock_fi_data()) # print(init_stock_fi_data()) stock_base = t_util.bytes_to_dataFrame( RedisBase().redis().get('stock_base')) df = stock_base.drop_duplicates(['industry']) for index, row in df.iterrows(): print(row['industry']) # init_everyday()
# df = tuShare.get_realtime_quotes('000425') # for index, cow in df.iterrows(): # print(cow) # price = df.loc[0, 'price'] # print(price) # print(df) # stock_data = get_skData().stock_b() # flag = RedisBase().redis().set('stock_base', df_bytes) # df = t_util.bytes_to_dataFrame(RedisBase().redis().get('stock_base')) # date:日期YYYY-MM-DD,默认为上一个交易日,目前只能提供2016-08-09之后的历史数据 stock_basics = tuShare.get_stock_basics('2020-02-28') df = stock_basics.loc['000732'] start = datetime.datetime.now() # daily_data = t_util.bytes_to_dataFrame(RedisBase().redis().get('stock_daily')) # stock_data = t_util.bytes_to_dataFrame(RedisBase().redis().get('stock_base')) stock_details_daily = t_util.bytes_to_dataFrame( RedisBase().redis().get('stock_details_daily')) end = datetime.datetime.now() print('Running time: %s Seconds' % (end - start)) # print(daily_data) print(tuShare.get_stock_basics()) # print(daily_data) # r = 100 / 100 # print(round(r))
def __init__(self): """Redis 数据初始化,取股票基本数据""" self.stock_details_daily = Util_tools.bytes_to_dataFrame( RedisBase().redis().get('stock_details_daily')) """高危版块""" self.list_industry = config.industry.split('|')