1. 무엇을 할 것인가?
한국거래소 기업공시채널(kind.krx.co.kr)에서 제공하는 엑셀 파일 읽기를 해보자!!
일단 저 사이트에 접속
(kind.krx.co.kr) -> 상장법인상세정보 -> 상장법인목록 -> excel 파일 다운로드
excel 파일을 열면 아래와 같이 표시된다.
-> 그래서 read_excel() 함수를 사용해야 할 것 같지만
해당 파일을 메모장으로 열어보면 아래와 같이 html 파일로 이루어진 것을 알 수 있다.
따라서 팬더스의 read_html() 함수를 이용하여 파일을 읽어야 한다.
2. 선행과정
read_html() 함수를 호출 하기 위해 필요 라이브러리를 설치해 준다.
C:\Users\user\AppData\Local\Programs\Python>pip install html5lib
C:\Users\user\AppData\Local\Programs\Python>pip install lxml
read_html 함수는 HTML 파일 내부에 존재하는 TABLE 태그를 분석하여 데이터프레임으로 변환하여 준다.
3. 엑셀파일 읽어오기
그럼 함수를 이용해 엑셀 파일을 읽어와 보자
>>> import pandas as pd
>>> krx_list = pd.read_html('C:/Users/user/Desktop/상장법인목록.xls')
>>> krx_list[0]
회사명 종목코드 ... 홈페이지 지역
0 나우코스 257990 ... http://www.nowcos.com/ 세종특별자치시
1 에이스캠퍼 322190 ... http://acecamper.co.kr/ 충청남도
2 유안타제7호스팩 367460 ... NaN 서울특별시
3 루트락 253610 ... http://rootloc.com/ 서울특별시
4 ESR켄달스퀘어리츠 365550 ... http://www.esrks-reit.com 서울특별시
... ... ... ... ... ...
2406 CJ대한통운 120 ... http://www.cjlogistics.com 서울특별시
2407 메리츠화재 60 ... http://www.meritzfire.com 서울특별시
2408 경방 50 ... http://www.kyungbang.co.kr 서울특별시
2409 유수홀딩스 700 ... http://www.eusu-holdings.com 서울특별시
2410 한진중공업홀딩스 3480 ... http://www.hhic-holdings.com 경기도
[2411 rows x 9 columns]
근데 보면 종목코드에서 원래는 000120 이런식으로 6자리 여야 하는데..
앞자리 0이 다 생략이 되었다. 그래서 map() 함수 사용
// map() 인수로 받은 함수를 이용 값을 변경 아래 내용을 적용시키는 함수
'{:06d}'.format = 여섯 자리 숫자 형식으로 표현, 빈 앞자리는 0으로 채우라~
>>> krx_list[0].종목코드 = krx_list[0].종목코드.map('{:06d}'.format)
>>> krx_list[0]
회사명 종목코드 ... 홈페이지 지역
0 나우코스 257990 ... http://www.nowcos.com/ 세종특별자치시
1 에이스캠퍼 322190 ... http://acecamper.co.kr/ 충청남도
2 유안타제7호스팩 367460 ... NaN 서울특별시
3 루트락 253610 ... http://rootloc.com/ 서울특별시
4 ESR켄달스퀘어리츠 365550 ... http://www.esrks-reit.com 서울특별시
... ... ... ... ... ...
2406 CJ대한통운 000120 ... http://www.cjlogistics.com 서울특별시
2407 메리츠화재 000060 ... http://www.meritzfire.com 서울특별시
2408 경방 000050 ... http://www.kyungbang.co.kr 서울특별시
2409 유수홀딩스 000700 ... http://www.eusu-holdings.com 서울특별시
2410 한진중공업홀딩스 003480 ... http://www.hhic-holdings.com 경기도
[2411 rows x 9 columns]
4. url 경로를 이용한 엑셀 파일 읽어오기
엑셀파일을 다운 받지 않고 직접 경로를 입력하여 데이터를 가져오는 방법도 있다.
>>> df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13')[0]
>>> df['종목코드'] = df['종목코드'].map('{:06d}'.format)
>>> df = df.sort_values(by= '종목코드')
>>> df
회사명 종목코드 ... 홈페이지 지역
924 동화약품 000020 ... http://www.dong-wha.co.kr 서울특별시
1502 KR모터스 000040 ... http://www.krmotors.com 경상남도
1507 경방 000050 ... http://www.kyungbang.co.kr 서울특별시
1529 메리츠화재 000060 ... http://www.meritzfire.com 서울특별시
36 삼양홀딩스 000070 ... http://www.samyang.com 서울특별시
... ... ... ... ... ...
2355 코오롱티슈진 950160 ... http://tissuegene.com 미국
705 JTC 950170 ... http://www.groupjtc.com/korean/ 일본
1007 SNK 950180 ... http://www.snk-corp.co.jp 일본
1631 미투젠 950190 ... http://www.me2zen.com 홍콩
1654 소마젠 950200 ... NaN 미국
[2411 rows x 9 columns]
sort_values 종목 칼럼을 기준으로 오름차순 정렬했다. 기본 오름차순 정렬이고
ascending=False 함수를 이용하면 내림차순 정렬된다.
>>> df = df.sort_values(by= '종목코드', ascending=False)
>>> df
회사명 종목코드 ... 홈페이지 지역
1654 소마젠 950200 ... NaN 미국
1631 미투젠 950190 ... http://www.me2zen.com 홍콩
1007 SNK 950180 ... http://www.snk-corp.co.jp 일본
705 JTC 950170 ... http://www.groupjtc.com/korean/ 일본
2355 코오롱티슈진 950160 ... http://tissuegene.com 미국
... ... ... ... ... ...
36 삼양홀딩스 000070 ... http://www.samyang.com 서울특별시
1529 메리츠화재 000060 ... http://www.meritzfire.com 서울특별시
1507 경방 000050 ... http://www.kyungbang.co.kr 서울특별시
1502 KR모터스 000040 ... http://www.krmotors.com 경상남도
924 동화약품 000020 ... http://www.dong-wha.co.kr 서울특별시
[2411 rows x 9 columns]
- 모든 내용은 파이썬 증권 데이터 분석 책을 공부하며 작성해보았습니다.
'Python > 증권 데이터 분석' 카테고리의 다른 글
뷰티풀 수프(Beautiful Soup) 이용한 페이지 크롤링 작업 (6) | 2021.01.07 |
---|---|
HTML 주요 태그 리스트(HTML main tag list) (0) | 2021.01.07 |
3년 전 - 마이크로소프트, 삼성전자 - 주식을 샀다면?? 코딩을 이용한 수익 비교 (0) | 2021.01.04 |
팬더스를 이용한 주식 시세 비교하기 (Comparison of Stock Price Using Panthers) (0) | 2020.12.22 |
팬더스 데이터프레임 여러 방법을 이용한 생성 및 순회 처리하기 (0) | 2020.12.22 |
댓글