본문 바로가기
Python

[파이썬 증권데이터 분석] 팬더스로 상장법인 목록읽기

by 펄블리네 2023. 7. 26.

 주식투자를 위해 '파이썬 증권데이터 분석' 책을 보고 공부하기 시작했다. 내 손으로 직접 나에게 맞는 주식 투자 방법을 개발하는 날을 위해 공부를 할 예정이다. 그중 파이썬 팬더스를 이용해 상장법인 목록을 가져오는 방법을 작성해보겠다.

 

팬더스(Pandas)란?

파이썬의 데이터분석 라이브러리로 구조화된 데이터를 쉽고 빠르게 가공할 수 있는 자료형과 함수를 제공한다.

팬더스는 R에서 사용되던 data.frame 구조를 본뜬 DataFrame이라는 구조를 사용하기 때문에, R의 data.frame에서 사용하던 기능 상당수를 무리없이 사용할 수 있도록 만들었다.(시리즈, 데이터프레임 자료형 객체 등)

또한 파이썬 기반 데이터 시각화 라이브러리인 파이플롯과도 쉽게 호환되기 때문에 데이터 과학용 기본 라이브러리로도 널리 활용된다.

 

한국거래소 기업공시채널에서 상장법인목록 가져오기

먼저 한국거래소 기업공시채널(https://kind.krx.co.kr/)에 접속한다.

 

대한민국 대표 기업공시채널 KIND

 

kind.krx.co.kr

 

상장법인상세정보-상장법인목록

EXCEL 버튼을 눌러 상장법인 목록을 받아온다.

 

메모장으로 해당 파일을 열어보면 html로 되어있는 것을 확인할 수 있다.

 

파이썬으로 상장법인목록 가져오기

팬더스의 read_html() 함수로 상장법인 목록을 읽는다.

import pandas as pd

krx_list = pd.read_html('C:/Users/User/Downloads/상장법인목록.xls')
krx_list[0]
            회사명    종목코드  ...                          홈페이지     지역
0         길교이앤씨  456700  ...                        길교.com   경상북도
1           버넥트  438700  ...        http://www.virnect.com  서울특별시
2          뷰티스킨  406820  ...  http://beautyskincorp.co.kr/  인천광역시
3     SK증권제9호스팩  455910  ...                           NaN  서울특별시
4           와이랩  432430  ...         http://ylabcomics.com  서울특별시
...         ...     ...  ...                           ...    ...
2639       유한양행     100  ...        http://www.yuhan.co.kr  서울특별시
2640     CJ대한통운     120  ...    http://www.cjlogistics.com  서울특별시
2641         경방      50  ...    http://www.kyungbang.co.kr  서울특별시
2642      유수홀딩스     700  ...  http://www.eusu-holdings.com  서울특별시
2643   한진중공업홀딩스    3480  ...  http://www.hhic-holdings.com    경기도

[2644 rows x 9 columns]

만약 html5lib이나 lxml 라이버리를 추가로 설치하라는 에러가 발생한다면

터미널에서 pip install html5lib 또는 pip install lxml 으로 해당 라이브러리를 설치한다.

 

종목코드에서 앞의 0은 생략되어 불러오는 것을 볼 수 있다.

krx_list[0].종목코드 = krx_list[0].종목코드.map('{:06d}'.format)
krx_list[0]
            회사명    종목코드  ...                          홈페이지     지역
0         길교이앤씨  456700  ...                        길교.com   경상북도
1           버넥트  438700  ...        http://www.virnect.com  서울특별시
2          뷰티스킨  406820  ...  http://beautyskincorp.co.kr/  인천광역시
3     SK증권제9호스팩  455910  ...                           NaN  서울특별시
4           와이랩  432430  ...         http://ylabcomics.com  서울특별시
...         ...     ...  ...                           ...    ...
2639       유한양행  000100  ...        http://www.yuhan.co.kr  서울특별시
2640     CJ대한통운  000120  ...    http://www.cjlogistics.com  서울특별시
2641         경방  000050  ...    http://www.kyungbang.co.kr  서울특별시
2642      유수홀딩스  000700  ...  http://www.eusu-holdings.com  서울특별시
2643   한진중공업홀딩스  003480  ...  http://www.hhic-holdings.com    경기도

[2644 rows x 9 columns]

map 함수를 이용해 각 list요소의 종목코드를 6자리 정수형태로 변형해주면서 앞의 공백은 0으로 채울 수 있도록 한다.

 

URL을 이용해 상장법인목록 불러오기

df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13')[0]
df.종목코드 = df.종목코드.map('{:06d}'.format)
df
            회사명    종목코드  ...                        홈페이지     지역
0        AJ네트웍스  095570  ...      http://www.ajnet.co.kr  서울특별시
1       BNK금융지주  138930  ...        http://www.bnkfg.com  부산광역시
2           DSR  155660  ...          http://www.dsr.com  부산광역시
3            GS  078930  ...                         NaN  서울특별시
4     HDC현대산업개발  294870  ...      http://www.hdc-dvp.com  서울특별시
...         ...     ...  ...                         ...    ...
2639     카이바이오텍  446600  ...  http://www.kaibiotech.com/   전라북도
2640     코스텍시스템  169670  ...     http://www.kosteks.com/    경기도
2641       타임기술  318660  ...         http://timett.co.kr   경상남도
2642        테크엔  308700  ...     http://www.techen.co.kr  대구광역시
2643   한국미라클피플사  331660  ...       http://www.kmpc.co.kr    경기도

[2644 rows x 9 columns]

read_html의 인수로 URL을 주고,  read_html()함수 뒤에 [0]을 붙여 결과값을 데이터프레임으로 받았다.

만약 종목코드의 오름차순으로 정렬하고 싶다면

df = df.sort_values(by='종목코드')
df
             회사명    종목코드  ...                              홈페이지     지역
1056        동화약품  000020  ...         http://www.dong-wha.co.kr  서울특별시
1986       KR모터스  000040  ...           http://www.krmotors.com   경상남도
1684          경방  000050  ...        http://www.kyungbang.co.kr  서울특별시
50         삼양홀딩스  000070  ...            http://www.samyang.com  서울특별시
443        하이트진로  000080  ...          http://www.hitejinro.com  서울특별시
...          ...     ...  ...                               ...    ...
1767         JTC  950170  ...   http://www.groupjtc.com/korean/     일본
2119         미투젠  950190  ...             http://www.me2zen.com     홍콩
2140         소마젠  950200  ...               http://psomagen.com     미국
2060  프레스티지바이오파마  950210  ...  http://www.prestigebiopharma.com   싱가포르
486        네오이뮨텍  950220  ...        http://neoimmunetech.co.kr     미국

[2644 rows x 9 columns]

sort_values()함수로 종목코드의 오름차순으로 정렬했다. 내림차순으로 정렬하고 시다면 ascending=False 인수를 추가해준다.

 

 


참고문헌

더보기

파이썬 증권데이터 분석 - 김황후 지음

 

 

반응형

'Python' 카테고리의 다른 글

[파이썬/Python] 삼성전자 캔들차트 그리기  (0) 2023.07.26

댓글