더북(TheBook)

그다음 ROE 값 및 1/PER이 클수록 높은 순위가 되도록 내림차순 정렬한 후 이 결과를 RANK_ROE, RANK_1/PER 열을 만들어 저장합니다. df['ROE'].rank란 ROE 열을 기준으로 순위를 매긴 것으로, 이 순위를 RANK_ROE 열에 저장합니다. rank 함수에 전달되는 method='max'는 동점을 처리하는 방법으로, 두 값이 같아 공동 1등이라면 둘 다 2등으로 처리하는 방식을 의미합니다. 또 ascending=False란 오름차순(ascending)이 아니라는 것으로 내림차순 정렬을 의미합니다.

df['RANK_ROE'] = df['ROE'].rank(method='max', ascending=False)

df['RANK_1/PER'] = df['1/PER'].rank(method='max', ascending=False)

이후 ROE와 1/PER 순위의 평균을 계산해서 RANK_VALUE라는 새로운 열을 만듭니다. RANK_VALUE가 작을수록 RANK_ROE, RANK_1/PER의 순위가 높다는 것이며, 그만큼 ROE는 크고 PER은 낮은 값을 갖고 있다는 의미입니다.

따라서 우리는 RANK_VALUE를 기준으로 종목들을 오름차순 정렬한 후 상위 종목 200개를 추출하고자 인덱스 번호를 이용하여 행을 슬라이싱하는 loc 함수를 사용했습니다.

df['RANK_VALUE'] = (df['RANK_ROE'] + df['RANK_1/PER']) / 2

df = df.sort_values(by=['RANK_VALUE'])
df.reset_index(inplace=True, drop=True)
df = df.loc[:199]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.