본 포스팅은 '퀀트전략 파이썬으로 세워라' (박준규 지음) 중 제2장 '판다스를 이용한 데이터 분석' 내용을 요약정리한 것입니다.
2. 판다스를 이용한 데이터 분석
판다스(pandas)는 웨스 맥키니가 2008년 초에 파이썬으로 더 빠르고 쉬운 데이터 분석을 위해 개발한 파이썬용 데이터 분석 모듈이다. 고 ROA, 저 PER 주식을 선별하는 조엘 그린 블란트의 마법공식을 파이썬 판다스를 이용하여 모델링하는 것이 이번 장의 목표이다.
회사별 PER, ROA 값이 엑셀 데이터가 주어진 상태에서 어떤 순서로 모델링을 세워야 하는지 살펴보면 아래와 같다.
- 엑셀 데이터를 파이썬으로 불러오기
- PER: 음수 필터링, 올림차순 정렬, 순위 매기기
- ROA: Na값 필터링, 내림차순 정렬, 순위 매기기
- PER, ROA 순위 종합 후 올림차순 정렬
파이썬으로 조엘 그린 블란트의 마법공식을 구현한 코드는 아래와 같다. (자세한 설명은 생략)
#함수정의
def magic_by_pd(file_path):
#판단스 import
import pandas as pd
#PER 데이터 정리
per_data = pd.read_excel(file_path, sheet_name='PER', index_col=0)
filtered_per = per_data[per_data['PER']>0]
sorted_per = filtered_per.sort_values(by='PER')
sorted_per['PER랭킹'] = sorted_per['PER'].rank()
#ROA 데이터 정리
roa_data = pd.read_excel(file_path, sheet_name='ROA', index_col=0)
filtered_roa = roa_data.dropna()
filtered_roa.columns = ['ROA']
sorted_roa = filtered_roa.sort_values(by='ROA',ascending=False)
sorted_roa['ROA랭킹'] = sorted_roa['ROA'].rank(ascending=False)
#PER, ROA 데이터 합치기
total_df = pd.merge(sorted_per, sorted_roa, how='inner', left_index=True, right_index=True)
#종합순위
total_df['종합랭킹']=(total_df['PER랭킹']+total_df['ROA랭킹']).rank()
sorted_total_df = total_df.sort_values(by='종합랭킹')
return sorted_total_df
이렇게 코딩을 한 후에는 파이썬 파일로 모듈화하면 편리하게 사용 가능하다. 아나콘다에 기본으로 딸려있는 'spyder'라는 편집기를 이용하여 위 코드를 'MagicQuant'라는 모듈로 저장하였다. 이렇게 모듈로 저장해두면, 나중에 코드를 다시 입력하지 않고 모듈만 불러오기 하여 언제든 사용이 가능하다.
#마법공식(MagicQuant) 모듈 불러와서 사용하기
import MagicQuant
file_path = 'C:\\Users\\JSMK\\Desktop\\파이썬으로 하는 퀀트투자\\마법공식 데이터.xlsx'
MagicQuant.magic_by_pd(file_path)
이상으로, 파이썬을 이용한 데이터 분석 포스팅을 마치겠습니다.
'2. 프로그래밍 > 1) 퀀트투자' 카테고리의 다른 글
[퀀트투자] 파이썬 기본과 마법공식 구현 (0) | 2022.03.02 |
---|
댓글