import pandas as pd import numpy as np import quantcommon #가치주 포트폴리오. PER, PBR이 낮은 회사 20개 # DB 연결 engine = quantcommon.QuantCommon().create_engine() ticker_list = pd.read_sql(""" select * from kor_ticker where 기준일 = (select max(기준일) from kor_ticker) and 종목구분 = '보통주'; """, con=engine) value_list = pd.read_sql(""" select * from kor_value where 기준일 = (select max(기준일) from kor_value); """, con=engine) engine.dispose() value_list.loc[value_list['값'] <= 0, '값'] = np.nan value_pivot = value_list.pivot(index='종목코드', columns='지표', values='값') data_bind = ticker_list[['종목코드', '종목명']].merge(value_pivot, how='left', on='종목코드') # print(data_bind.head()) value_rank = data_bind[['PER', 'PBR']].rank(axis = 0) value_sum = value_rank.sum(axis = 1, skipna = False).rank() print(data_bind.loc[value_sum <= 20, ['종목코드', '종목명', 'PER', 'PBR']])