지난 회차에 쥬피터 노트북을 사용하여 종목별 주요 정보라 할 수 있는 PER,EPS,PBR,BPS 등 을 엑셀로 다운로드 받는 법을 알아봤습니다.
2022.04.19 - [주식공부 feat. 파이썬] - 7. 주가 데이터 엑셀로 다운로드 확장판 feat. EPS PER BPS PBR
이번 회차에는 원하는 종목들을 한꺼번에 엑셀로 다운로드 받는 법을 알아보겠습니다.
>>> 주가 데이터 엑셀로 한꺼번에 다운로드
feat. 등락율+거래량
1. 주가 데이터 엑셀로 받기
2022.04.02 - [주식공부 feat. 파이썬] - 5. 주가 데이터 엑셀로 다운로드 받기 확장판 feat.등락률 + 거래량
지난 회차들을 통해서 주가 데이터를 엑셀로 받을 수 있는 방법들을 알아봤었습니다.
이번 회차에는 한꺼번에 원하는 종목들을 한꺼번에 받는 것을 알아보고자 합니다.
대상은 4월 15일자 코스피 시가총액 14위 부터 18위까지 입니다.
from pykrx import stock
df = stock.get_market_ohlcv("20210401", "20220415", "323410")
df.to_excel('Stocks/카카오뱅크.xlsx')
1 종목씩 받고자 한다면, 위와 같은 코드를 반복해서 만들어야 합니다.
이를 파이썬의 반복문을 이용하여, 한꺼번에 5개의 파일을 만들어 보겠습니다.
import pandas as pd
from pykrx import stock
stocks = { "카카오뱅크":"323410", "셀트리온":"068270","신한지주":"055550","LG전자":"066570","삼성물산":"028260"}
for key in stocks:
code = stocks[key]
df = stock.get_market_ohlcv("20210401", "20220415", code)
df.to_excel(f"Stocks/{key}0.xlsx")
코드는 위와 같습니다.
(1) 파이썬(Python) - 자료형태 Dictionary
위 코드에서 stocks = { } 안에 원하는 종목이름과 종목코드를 { } 안에, { "종목이름" : "종목코드" } 형식으로 넣어주시면 됩니다.
이 코드에 대해서 잠깐 설명하자면,
파이썬의 자료 형태 중에 딕셔너리(Dictionary) 라고 하는데, 단어 그대로 해석하면 사전이라는 뜻입니다. 영어 사전을 보면 단어가 있으면 그에 대응하는 설명이 있는 형태입니다. 예를 들어 " Book"에 대응하는 한국어는 "책" 으로 연결되는 형태의 자료형이라는 뜻입니다. 통상 앞에 있는 값을 Key라 부르고 이에 대응하는 값을 value로 부르며 한 쌍으로 움직입니다.
여기서는 "카카오뱅크" 가 Key가 되고 종목코드인 "323410"은 value가 됩니다.
"stocks" 라는 이름의 딕셔너리 자료에 카카오뱅크,셀트리온,신한지주,LG전자,삼성물산의 종목코드를 저장해 두었다는 의미입니다.
자료를 구하고자 하는 종목들이 있으면, 다른 코드들은 변동시키지 않고 이 부분에만 { "종목이름" : "종목코드" } 형태로 바꾸어서 넣으시면 됩니다. 갯수도 원하시는 만큼 넣으시면 됩니다.
(2) 파이썬(Python) - 반복문 for
이제 위 stocks 안에 있는 종목들을 반복문을 통해서 실행시키면 됩니다.
파이썬의 대표적인 반복문은 for 를 사용하여 만듭니다.
기본구조는
for 변수 in 리스트 :
수행할 작업
형태입니다.
유의할 사항은 " : " 콜론을 끝에 넣어줘야합니다. 깜박 잊는 경우가 있습니다.
그리고 다음줄 수행할 작업은 들여쓰기를 꼭 해야합니다. 통상 탭키 (스페이스 4칸) 정도 들여쓰기를 하는데, 쥬피터 노트북에서는 자동으로 들여쓰기를 해줍니다. 혹시 다른 데는 문제가 없는데 에러가 나면 이 부분을 확인해 보시기 바랍니다.
위 반복문 코드를 한 줄씩 번역하자면,
" for key in stocks: " - stocks안의 key값을 key라는 변수 안에 순차적으로 실행하라. key 변수안에는 "카카오뱅크,셀트리온,신한지주,LG전자,삼성물산" 이 들어가게 됩니다.
"code = stocks[key] " - key의 value 값을 code라는 변수로 실행하라. 즉, "323410", "068270", "055550", "066570", "028260" 이 순차적으로 실행됩니다.
" df = stock.get_market_ohlcv("20210401", "20220415", code) " - code에는 "323410"이 먼저 들어가 실행합니다.
"df.to_excel(f"Stocks/{key}0.xlsx") " - key변수 이름으로 파일저장. 즉, "카카오뱅크0.xlsx"로 저장됩니다.
이후 다시 처음 으로 돌아가 " for key in stocks: " 에서 셀트리온이 실행됩니다. 그 후에 신한지지, LG전자, 삼성물산 순으로 반복하고 더 이상 실행할 작업이 없기 때문에 끝이 납니다.
2. 이동평균 추가 및 그래프 그리기 코드
import pandas as pd
from pykrx import stock
stocks = { "카카오뱅크":"323410", "셀트리온":"068270","신한지주":"055550","LG전자":"066570","삼성물산":"028260"}
for key in stocks:
code = stocks[key]
df = stock.get_market_ohlcv("20210401", "20220415", code)
df['등락률'] = df['종가'].pct_change()
df['5일_이동평균']=df['종가'].rolling(5).mean()
df['20일_이동평균']=df['종가'].rolling(20).mean()
df['60일_이동평균']=df['종가'].rolling(60).mean()
df['120일_이동평균']=df['종가'].rolling(120).mean()
df.to_excel(f"Stocks/{key}.xlsx")
위에 실행했던 다운로드 코드 밑에 등락률과 이동평균 코드를 추가합니다.
반복문 밑에 들여쓰기를 맞추어 넣어주면 됩니다.
from pykrx import stock
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib
matplotlib.rcParams['font.family'] ='Malgun Gothic'
matplotlib.rcParams['font.size'] = 15
matplotlib.rcParams['axes.unicode_minus'] = False
stocks = { "카카오뱅크":"323410", "셀트리온":"068270","신한지주":"055550","LG전자":"066570","삼성물산":"028260"}
for key in stocks:
df=pd.read_excel(f"Stocks/{key}.xlsx")
plt.figure(figsize=(15,10))
plt.xticks(rotation=45)
plt.plot(df['날짜'],df['종가'], label='종가', linewidth=3, color='#CD5C5C')
plt.xlabel('20210401~20220414', color='#CD5C5C', loc='right') #left, center, right
plt.ylabel('단위: 원', color='#CD5C5C', loc='top') # top, center, bottom
plt.legend()
plt.title(f"{key}", color='green')
plt.grid(axis='y',linestyle='--',color='purple')
plt.savefig(f"Stocks/{key}.png",dpi=100)
plt.figure(figsize=(15,5))
plt.bar(df['날짜'],df['거래량'], color='green')
plt.title(f"{key} 거래량")
plt.xlabel('20210401~20220412', color='green', loc='right') #left, center, right
plt.ylabel('단위: 1,000,000주', color='green', loc='top') # top, center, bottom
plt.grid(axis='y')
plt.savefig(f"Stocks/{key} 거래량.png",dpi=100)
그래프를 그릴 때도 반복문 for 밑에 들여쓰기를 해서 넣어주면 됩니다.
위 코드를 실행하면 ( CNTL+Enter ),
순식간에 10개의 그래프를 만들었습니다.
3. 이동 평균 그래프
위에서 만들었던 이동평균을 포함한 엑셀데이터를 이용하여 이동평균 그래프를 그립니다.
for key in stocks:
df=pd.read_excel(f"Stocks/{key}.xlsx")
plt.figure(figsize=(15,10))
plt.xticks(rotation=45)
plt.plot(df['날짜'],df['종가'], label='종가', linewidth=3, color='#CD5C5C')
plt.plot(df['날짜'],df['5일_이동평균'], label='5일 이동평균')
plt.plot(df['날짜'],df['20일_이동평균'], label='20일 이동평균')
plt.plot(df['날짜'],df['60일_이동평균'], label='60일 이동평균')
plt.plot(df['날짜'],df['120일_이동평균'], label='120일 이동평균')
plt.xlabel('20210401~20220414', color='#CD5C5C', loc='right') #left, center, right
plt.ylabel('단위: 원', color='#CD5C5C', loc='top') # top, center, bottom
plt.legend()
plt.title(f"{key}", color='green')
plt.grid(axis='y',linestyle='--',color='purple')
plt.savefig(f"Stocks/{key}1.png",dpi=100)
엑셀 파일 + 그래프
위 코드들을 실행해서 나온 결과물이 총 25개 파일 입니다. 걸린 시간은 총 1분이 걸리지 않습니다.
관심있는 종목들을 정해서 코드 세팅을 해 놓으면 자료를 얻는 데 들어가는 시간이 확 줄어들겁니다.
유용하다 생각되시면 코드는 언제든 가져다 쓰시기 바랍니다.
각 종목별로 나누어 포스팅을 해 놓겠습니다.
종목별 분석자료
2022.03.31 - [주식공부 feat. 파이썬/종목별 분석] - 2. LG에너지 솔루션 분석 자료 정리 feat. 파이썬
2022.03.31 - [주식공부 feat. 파이썬/종목별 분석] - 3. SK 하이닉스 분석 자료 정리 feat. 파이썬
2022.04.02 - [주식공부 feat. 파이썬/종목별 분석] - 4. 네이버 분석자료 정리 feat. 파이썬
2022.04.04 - [주식공부 feat. 파이썬/종목별 분석] - 5. 삼성바이오로직스 분석 자료 정리 feat. 파이썬
2022.04.04 - [주식공부 feat. 파이썬/종목별 분석] - 6. 삼성전자 우선주 분석 자료 정리 feat. 파이썬
2022.04.09 - [주식공부 feat. 파이썬/종목별 분석] - 7. 카카오 분석 자료 정리 feat. 파이썬
2022.04.09 - [주식공부 feat. 파이썬/종목별 분석] - 8. 삼성 SDI 분석 자료 정리 feat. 파이썬
2022.04.20 - [주식공부 feat. 파이썬/종목별 분석] - 9.현대자동차 분석 자료 정리 feat. 파이썬
2022.04.21 - [주식공부 feat. 파이썬/종목별 분석] - 10. LG 화학 분석 자료 정리 feat. 파이썬
2022.04.21 - [주식공부 feat. 파이썬/종목별 분석] - 11. 기아 분석 자료 정리 feat. 파이썬
2022.04.22 - [주식공부 feat. 파이썬/종목별 분석] - 12. POSCO 홀딩스 분석 자료 정리 feat. 파이썬
2022.04.22 - [주식공부 feat. 파이썬/종목별 분석] - 13. KB 금융 분석 자료 정리 feat. 파이썬
'주식공부 feat. 파이썬' 카테고리의 다른 글
9. 주가 비교 feat. 파이썬 반복문 for (0) | 2022.04.25 |
---|---|
7. 주가 데이터 엑셀로 다운로드 확장판 feat. EPS PER BPS PBR (0) | 2022.04.19 |
6. 엑셀 주가 데이터 분석하기 feat. 판다스 describe (0) | 2022.04.09 |
5. 주가 데이터 엑셀로 다운로드 받기 확장판 feat.등락률 + 거래량 (0) | 2022.04.02 |
4. 주가 데이터 엑셀로 다운로드 받기 확장판 feat. 이동평균 (1) | 2022.03.30 |
댓글