본문 바로가기
주식공부 feat. 파이썬

3. 주가 데이터 시각화 feat. 파이썬으로 그래프 그리기

by 에쓰지 2022. 3. 29.

지난 회차에 쥬피터 노트북을 사용하여 주가 데이터를 엑셀로 다운로드 받는 법을 알아봤습니다.

 

2022.06.03 - [파이썬과 주식] - 2. 주가 데이터 다운로드 받기 ( 엑셀 / CSV )

 

2. 주가 데이터 다운로드 받기 ( 엑셀 / CSV )

※ 늦게라도 "코딩"이란 것을 배워봐야겠다는 사람이 있다면 혹시라도 도움이 될까 해서 나의 경험담을 적어보려 합니다. 지난회차에 파이썬 Python을 사용할 환경설정을 위해서 아나콘다 Anaconda

pmxsg.tistory.com

이번 회차에는 받은 엑셀 파일로 그래프를 그려 보겠습니다.

엑셀로 받은 주가 데이터를 분석을 하는 가장 좋은 방법은 시각화가 아닌가 생각됩니다.

데이터 시각화(Data visualization)는 데이터 분석 결과를 쉽게 이해할 수 있도록

시각적으로 표현하고 전달되는 과정을 말한다.

데이터 시각화의 목적은 도표(graph)라는 수단을 통해 정보를 명확하고 효과적으로 전달하는 것이다.

<위키백과>

 

시각화에 가장 좋은 수단은 그래프라고 합니다.

 

>>>  주가 데이터 시각화  feat. 파이썬으로 그래프 그리기 

 

1. 그래프 그리기 코드

 

 

네이버 주식창에 있는 3년간의 주가변동 그래프 입니다.

Jupyter Notebook을 열고, 아래의 코드를 입력하시면 됩니다.

우선 삼성전자 3년간 주가변동을 엑셀데이터로 다운로드 받습니다.

import yfinance as yf 
Samsung_Electronic = yf.download('005930.KS','2019-03-01','2022-03-28') 
Samsung_Electronic.to_excel('Stocks/삼성전자.xlsx')

 

다운 받은 엑셀 파일을 불러와서 아래의 코드를 이용해서 그래프를 생성합니다.

 

import matplotlib.pyplot as plt 
import pandas as pd 
import yfinance as yf 
import matplotlib 

matplotlib.rcParams['font.family'] ='Malgun Gothic' 
matplotlib.rcParams['font.size'] = 15 
matplotlib.rcParams['axes.unicode_minus'] = False 

df=pd.read_excel('./Stocks/삼성전자.xlsx')

plt.figure(figsize=(15,10)) 
plt.xticks(rotation=45) 
plt.plot(df['Date'],df['Close'], label='종가', linewidth=3) 
plt.legend() plt.title('삼성전자') 
plt.grid(axis='y') 

plt.savefig('Stocks/삼성전자.png',dpi=100)

Cntl+Enter로 실행합니다.

실행결과

 

저장할 폴더로 "Stocks"로 미리 만들어 놓고 실행한 코드 입니다.

경로 지정으로 에러가 나는 부분은 만든 폴더 이름을 잘 적용하여 쓰시기 바랍니다.

2. 코드 설명

지난 회차에서 언급했던 yfinance 라이브러리 외에 2개의 라이브러리를 더 사용하게 됩니다.

import pandas as pd 
import matplotlib.pyplot as plt
 

판다스 Pandas는 데이터 조작 및 분석을 위한 Python 프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리 입니다.

특히 숫자 테이블과 시계열 을 조작하기 위한 데이터 구조 와 연산을 제공합니다.

맵플로립 Matplotlib은 그래프를 만드는 데 유용한 라이브러리 입니다.

그래프를 그리는 데 유용한 라이브러리는 나올 때 마다 소개하도록 하겠습니다.

import는 라이브러리 앞에 사용하는 데, 뒤에 나오는 라이브러리를 사용하겠다라는 의미의 코드로 쓰입니다.

"import pandas as pd" 는 " 판다스 라이브러리를 사용한다. 판다스를 쓸때 "pd"라는 코드를 쓰겠다." 라는 의미입니다.

matplotlib.rcParams['font.family'] ='Malgun Gothic' 
matplotlib.rcParams['font.size'] = 15 
matplotlib.rcParams['axes.unicode_minus'] = False
 

맵플로립 Matplotlib 라이브러리 자체에는 한글 지원이 없어서 그래프 안에 한글을 쓰려면 위와 같은 코드를 사용해야 합니다.

"matplotlib.rcParams['font.family'] ='Malgun Gothic' " : 한글 폰트로 "맑음고딕"체를 사용하겠다는 코드

"matplotlib.rcParams['font.size']" = 15 : 폰트 크기

"matplotlib.rcParams['axes.unicode_minus'] = False " : 한글 폰트 사용시, 마이너스 깨지는 것 방지

df=pd.read_excel('./Stocks/삼성전자.xlsx')

판다스 Pandas(pd.)를 라이브러리를 사용하여 엑셀 파일을 읽어드리겠다는 코드 입니다.

'./Stocks/삼성전자.xlsx' : 저장된 폴더 이름과 파일이름 위치 확인이 필요합니다. 이 부분에서 오류가 자주납니다.

 

실행 파일과 저장되어 있는 "Stocks"가 동일 폴더 안에 있기 때문에 폴더 "Stocks"앞에 "./" 를 지정하고 난 후 파일이름을 지정했습니다. 만약 하나 더 위쪽의 폴더에 있다면 "../" 점을 두 개 찍고 폴더 이름을 지정해서 들어가시면 됩니다.

plt.figure(figsize=(15,10))
plt.xticks(rotation=45) 
plt.plot(df['Date'],df['Close'], label='종가', linewidth=3) 
plt.legend() plt.title('삼성전자') plt.grid(axis='y') 

plt.savefig('Stocks/삼성전자.png',dpi=100)
 

맵플로립 Matplotlib(plt.)를 라이브러리를 사용하여 그래프를 그리겠다는 코드 입니다.

 

" plt.figure(figsize=(15,10)) " : "figure"는 그래프의 스타일을 호출하는 코드이고,

"figsize"는 크기를 설정합니다. (가로,세로)

"plt.xticks(rotation=45) " : "xticks"는 X축을 호출하는 코드이고,

"rotation=45" 는 45도 기울여서 쓰라는 의미 입니다.

" plt.plot(df['Date'],df['Close'], label='종가', linewidth=3) " :

"plot" 는 선그래프를 그리라고 호출하는 코드 입니다.

plot(x,y) 가 기본 호출인데, 위 코드는 x축은 df['Date'] (엑셀 데이터 안에 Date(날짜) 항목을 가리킴)로, y축은 df['Close'](엑셀 데이터 안에 Close(종가) 항목을 가리킴) 로 사용하라는 의미 입니다.

label은 선을 나타내는 이름을 나타내고, "linewidth"는 그래프 선의 굵기를 나타냅니다.

"plt.legend()" : "legend()"는 범례를 호출합니다.

"plt.title('삼성전자')" : "title"은 그래프의 제목을 호출합니다.

"plt.grid(axis='y')" : "grid"는 그래프에 보조선을 호출합니다. axis=y 는 y축과 평행한 선이 나타납니다.

"plt.savefig('Stocks/삼성전자.png',dpi=100)" : "savefig"는 그래프를 저장할 때 쓰는 코드입니다.

"dpi"는 dot per inch, 픽셀이 1인치안에 모인 수치인데, dpi=100은 1인치안에 픽셀 100개가 들어있다는 뜻입니다. 해상도를 높이려면 숫자를 더 높이면 됩니다.

삼성전자 엑셀 파일 + 그래프 :

삼성전자.xlsx
0.03MB

 
 

삼성전자.png
0.07MB

 

 



< 삼성전자 >

import yfinance as yf 
Samsung_Electronic = yf.download('005930.KS','2019-03-01','2022-03-28') 
Samsung_Electronic.to_excel('Stocks/삼성전자.xlsx')



import matplotlib.pyplot as plt 
import pandas as pd 
import yfinance as yf 
import matplotlib 

matplotlib.rcParams['font.family'] ='Malgun Gothic' 
matplotlib.rcParams['font.size'] = 15 
matplotlib.rcParams['axes.unicode_minus'] = False 

df=pd.read_excel('./Stocks/삼성전자.xlsx') 

plt.figure(figsize=(15,10)) 
plt.xticks(rotation=45) 
plt.plot(df['Date'],df['Close'], label='종가', linewidth=3) 
plt.legend() plt.title('삼성전자') 
plt.grid(axis='y') 

plt.savefig('Stocks/삼성전자.png',dpi=100)

< 카카오 >

import yfinance as yf 
Kakao = yf.download('035720.KS','2019-03-01','2022-03-28') 
Kakao.to_excel('Kakao.xlsx')


import matplotlib.pyplot as plt 
import pandas as pd 
import yfinance as yf 
import matplotlib

matplotlib.rcParams['font.family'] ='Malgun Gothic'
matplotlib.rcParams['font.size'] = 15
matplotlib.rcParams['axes.unicode_minus'] = False 

df=pd.read_excel('./Stocks/Kakao.xlsx') 

plt.figure(figsize=(15,10)) 
plt.xticks(rotation=45) 
plt.plot(df['Date'],df['Close'], label='종가', linewidth=3) 
plt.legend() 
plt.title('카카오') 
plt.grid(axis='y')

plt.savefig('Stocks/카카오.png',dpi=100)

Kakao.xlsx
0.03MB
카카오.png
0.06MB

 

주식 데이터를 엑셀로 다운받고 주가변동 그래프를 그릴 수 있는 코드입니다.

댓글