본문 바로가기

카테고리 없음

[파이썬 pandas] 주식 전 종목 코드(코스피, 코스닥) 구해서 데이터프레임으로 읽어오기

파이썬을 활용해서 계랑 투자를 해 볼까 고민하는 개인 투자자라면 필요한 것 중에 하나가 바로 종목 코드입니다. 다행히도 종목 코드 데이터는 한국 거래소에서 손쉽게 엑셀로 다운로드할 수 있습니다. 

http://marketdata.krx.co.kr/mdi#document=040601

 

한국거래소 홈페이지에서 [시장정보] > [상장현황] > [상장회사 검색]을 선택하면 됩니다. 아래와 같은 화면이 보인다면, 원하는 조건에 맞게 조회 버튼을 누른 후 엑셀로 다운로드하면 됩니다. 이제 이 데이터를 판다스에서 불러오겠습니다.

 

 

판다스에서 엑셀 데이터 읽어오기

판다스에는 엑셀 파일을 읽을 수 있는 read_excel()이라는 메서드를 제공하고 있습니다. 매개변수로 파일명(파일 경로)을 전달하면 엑셀 데이터를 불러옵니다.

import pandas as pd
code_data = pd.read_excel('data.xls')
# 상위 5행을 출력합니다.
code_data.head()

 

데이터가 불러와졌습니다. 하지만 자세히 보면 종목코드가 이상하다는 것을 알 수 있습니다. 종목 코드는 6자리로 이루어져야 하는데 자릿수가 모자란 코드들이 보입니다. 이는 판다스에서 데이터를 읽어 올 때 '종목코드' 컬럼의 데이터형을 int로 변환하면서 0이 빠졌기 때문입니다.

 

정말 그런 것인지 각 컬럼의 데이터 타입을 확인해 보겠습니다.

이 문제에 대한 가장 간단한 해결방법은 엑셀 데이터를 불러올 때, '종목코드' 칼럼의 데이터 타입을 int가 아닌 str으로 명시적으로 지정해주는 것입니다. 

 

컬럼의 데이터 타입 지정하기

read_excel 메서드에는 dtype이라는 매개변수가 존재합니다. 이 매개변수에 컬럼의 이름과 데이터 타입을 지정하면 판다스는 그 요청에 맞게 데이터를 읽습니다. 다시 한번 데이터를 불러오겠습니다.

code_data = pd.read_excel('data.xls', dtype={'종목코드': str})
code_data.head()

 

이번에는 6자리 모두 잘 나타났습니다. 데이터 타입도 확인해 보겠습니다.

dtype을 잘 지정하는 것만으로도 불필요한 추후 작업을 막을 수 있습니다. 만약 종목코드에 숫자 0이 빠진 채 작업을 시작했다면 무엇인가 다른 방법으로 0을 만들어 줘야 했을 겁니다. 

 

여기까지 데이터를 잘 불러오셨다면 필요한 컬럼만 추려서 별도의 데이터프레임으로 정리하면 오늘의 작업은 끝이 납니다.

code_data = code_data[['종목코드', '기업명']]
code_data.head()

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.