*해당 코드는 파이썬으로 배우는 포트폴리오 서적의 코드를 인용하여 작성한 코드입니다.
야후 파이낸스로 주가 데이터를 불러오는 방법은 블룸버그, 데이터가이드, 퀀티와이즈에 접근하기 힘든 일반인들에게는 굉장히 유용하다.
오늘은 야후파이낸스를 통해 주가 데이터를 불러오고 다양한 조건으로 원하는 데이터를 불러오는 방법에 대해서 알아보자.
[0. 패키지 다운로드]
야후파이낸스 주가 데이터를 가져오기 위해서는 먼저 패키지 설치가 우선된다.
windows + R 키를 누른 후 cmd 창을 열어 하단부의 명령어를 입력하여 패키지를 다운로드시켜주자
* 패키지 다운로드 입력어 (cmd 창에서 입력)
pip install yahoo_fin
pip install pandas
이후 파이썬에서 하단부의 코드를 통해 주가 데이터를 불러오기 위한 패키지들을 실행시켜준다.
1
2
3
|
# 0. 패키지 다운로드
import yahoo_fin.stock_info as si
import pandas as pd
|
cs |
[1. get_data 함수를 통해 주가 데이터 적재하기]
야후 파이낸스를 통해 주가 데이터를 불러오는 방법은 간단하다.
야후 파이낸스 패키지의 get data 함수를 통해 티커를 불러와주면 해당 데이터를 불러올 수 있다.
(티커를 확인하는 방법은 야후파이낸스 홈페이지 접속 후 해당 종목을 검색하면 간단하게 찾아볼 수 있다.)
1
2
3
4
5
6
7
|
# 1. 삼성전자, 네이버, 카카오 데이터 불러오기
se_data = si.get_data('005930.KS')
ka_data = si.get_data('035420.KS')
na_data = si.get_data('035720.KS')
# 주가데이터 확인
se_data.tail()
|
cs |
삼성전자, 네이버, 카카오의 티커를 입력 후 실행시켜주면 주가 데이터를 불러올 수 있으며,
tail 명령어를 통해서 데이터가 잘 적재되었는지 확인해볼 수 있다.
1
2
3
4
5
6
|
open high low close adjclose volume ticker
2022-06-27 59000.0 59900.0 58300.0 58800.0 58800.0 18122236 005930.KS
2022-06-28 59200.0 59500.0 58700.0 59400.0 59400.0 13540538 005930.KS
2022-06-29 58500.0 58800.0 58000.0 58000.0 58000.0 14677138 005930.KS
2022-06-30 57200.0 57600.0 57000.0 57000.0 57000.0 18915142 005930.KS
2022-07-01 56900.0 57500.0 55900.0 56200.0 56200.0 24982097 005930.KS
|
cs |
[2. 기간을 정하여 데이터 적재]
만약 주가 데이터의 기간을 정해서 데이터를 적재하고 싶다면,
get_data 함수에 start_date, end_date에 기간을 넣어주면 해당 기간의 데이터를 적재할 수 있다.
1
2
3
4
5
6
7
8
|
# 2. 주가데이터 기간 정하기 (2019.01~ 2022.01)
se_data = si.get_data('005930.KS', start_date='01/01/2019', end_date='01/01/2022')
ka_data = si.get_data('035420.KS', start_date='01/01/2019', end_date='01/01/2022')
na_data = si.get_data('035720.KS', start_date='01/01/2019', end_date='01/01/2022')
# 주가데이터 확인
se_data.tail()
|
cs |
tail 명령어를 통해 데이터를 확인해보자
1
2
3
4
5
6
|
open high low close adjclose volume ticker
2021-12-24 80200.0 80800.0 80200.0 80500.0 79725.992188 12086380 005930.KS
2021-12-27 80600.0 80600.0 79800.0 80200.0 79428.882812 10783368 005930.KS
2021-12-28 80200.0 80400.0 79700.0 80300.0 79527.914062 18226325 005930.KS
2021-12-29 80200.0 80200.0 78500.0 78800.0 78394.773438 19794795 005930.KS
2021-12-30 78900.0 79500.0 78100.0 78300.0 77897.343750 14236700 005930.KS
|
cs |
[3. 주간, 월간 데이터 적재]
기간 이외에도 주간, 월간 데이터만 적재하고 싶다면, get_data 함수 내의 interval 명령어를 추가하여 데이터를 적재할 수 있다.
* 주간 데이터를 원할 경우 interval = '1wk'
*월간 데이터를 원할 경우 interval = '1mo'
1
2
3
4
5
6
7
|
# 3. 주가데이터의 구간 정하기 (주간, 월간) >> 주간일경우 1wk, 월간일경우 1mo
se_data = si.get_data('005930.KS', start_date='01/01/2019', end_date='01/01/2022', interval='1wk')
ka_data = si.get_data('035420.KS', start_date='01/01/2019', end_date='01/01/2022', interval='1wk')
na_data = si.get_data('035720.KS', start_date='01/01/2019', end_date='01/01/2022', interval='1wk')
# 주가데이터 확인
se_data.tail()
|
cs |
주간 데이터가 잘 적재되었는지 tail 명령어를 통해 데이터를 확인해보자
1
2
3
4
5
6
|
open high low close adjclose volume ticker
2021-11-29 73200.0 76700.0 70500.0 76300.0 75566.382812 110694127 005930.KS
2021-12-06 76100.0 78600.0 75600.0 76800.0 76061.578125 86589290 005930.KS
2021-12-13 76500.0 78500.0 76200.0 77100.0 76358.687500 56930581 005930.KS
2021-12-20 77900.0 80800.0 77500.0 80200.0 79428.882812 67798436 005930.KS
2021-12-27 80200.0 80400.0 78100.0 78300.0 77547.148438 52257820 005930.KS
|
cs |
[4. 삼성전자, 네이버, 카카오의 주가 데이터를 한 번에 적재시키기]
만약 주가 데이터를 한번에 가져오고 싶다면, lambda 와 reduce함수를 이용하여 한번에 주가 데이터를 적재할 수 있다.
(하단부의 코드는 삼성전자, 네이버, 카카오의 주가데이터를 한번에 적재시킨 코드이다.)
1
2
3
4
5
6
7
8
9
|
# 4.여러개의 종목의 주가데이터 한번에 가져오기
korea = ['005930.KS', '035420.KS', '035720.KS']
price_data = {ticker : si.get_data(ticker, start_date='01/01/2019', end_date='01/01/2022') for ticker in korea}
from functools import reduce
combined = reduce(lambda x, y : x.append(y),price_data.values())
combined.head()
combined.tail()
|
cs |
해당 데이터들이 잘 적재되어있는지 head와 tail 명령어를 통해 확인해보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> combined.head()
open high low close adjclose volume ticker
2019-01-02 39400.0 39400.0 38550.0 38750.0 35149.937500 7847664 005930.KS
2019-01-03 38300.0 38550.0 37450.0 37600.0 34106.777344 12471493 005930.KS
2019-01-04 37450.0 37600.0 36850.0 37450.0 33970.718750 14108958 005930.KS
2019-01-07 38000.0 38900.0 37800.0 38750.0 35149.937500 12748997 005930.KS
2019-01-08 38000.0 39200.0 37950.0 38100.0 34560.324219 12756554 005930.KS
>>> combined.tail()
open high low close adjclose volume ticker
2021-12-24 113830.968750 115845.671875 113327.289062 115342.000000 115288.531250 1473671 035720.KS
2021-12-27 114838.320312 115342.000000 113830.968750 113830.968750 113778.203125 1108549 035720.KS
2021-12-28 113830.968750 114838.320312 113830.968750 114334.640625 114281.640625 2353548 035720.KS
2021-12-29 116349.351562 118364.054688 114838.320312 114838.320312 114838.320312 1778425 035720.KS
2021-12-30 114838.320312 115342.000000 113327.289062 113327.289062 113327.289062 1214149 035720.KS
|
cs |
야후 파이낸스를 통해 다양한 조건식을 바탕으로 주가데이터 이외에도 재무제표 등의 다양한 데이터를 불러올 수 있다.
야후 파이낸스 패키지에 대하여 다른 점들이 궁금할경우 이 게시글에서 배운 정보를 바탕으로 공부하며 알아본다면, 금융데이터의 접근이 어려운 일반인들에게 많은 도움이 될 것이다.
아래는 내가 코드를 작성하면서 인용한 도서의 링크이다.
파이썬을 이용한 효율적 투자선을 구해보고 싶다면..
댓글