더북(TheBook)

기존에 만들었던 execute_crawler 함수로 크롤링한 데이터를 get_universe 함수 내 df 변수에 저장했습니다. 그다음 df의 행, 열에서 빈 값이나 'N/A'로 표현된 값을 0으로 바꾸어 주고 숫자로 되어 있는 문자형 데이터들을 실수형(float)으로 바꾸어 주는 작업을 했습니다.

이후 다음 코드부터는 앞서 설명한 유니버스를 구성하는 조건 ~를 만족하는 데이터만 필터링하여 df에 저장합니다.

df = df[(df['거래량'] > 0) & (df['매출액'] > 0) & (df['매출액증가율'] > 0) & (df['ROE'] > 0) &
(df['PER'] > 0) & (~df.종목명.str.contains("지주")) & (~df.종목명.str.contains("홀딩스"))]

(df['거래량'] > 0) & (df['매출액'] > 0) 코드는 거래량과 매출액이 모두 0보다 크다는 의미로, 이는 거래 중지 종목 및 우선주, ETF를 제외하는 필터 역할을 합니다. (df['매출액증가율'] > 0) & (df['ROE'] > 0)은 코드 그대로 매출액 증가율과 ROE가 0보다 큰 종목을 가져오며, (df['PER'] > 0)은 PER이 낮을수록 좋다고 평가하는 과정에서 (-) 값인 PER를 가진 종목이 높은 순위를 받지 않도록 미리 제외하는 필터 역할을 합니다. 마지막으로 (~df.종목명.str.contains("지주")) & (~df.종목명.str.contains("홀딩스"))는 종목명에 ‘지주’이거나 ‘홀딩스’인 데이터를 제외합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.