본문 바로가기
파이썬과 주식

11. 파이썬 반복문을 이용한 주가 비교

by 에쓰지 2022. 9. 13.

지난 회차에 반복문을 사용하여 주가를 한꺼번에 다운로드 받은 데이터에 이동평균을 더하고 그래프를 그리는 코드를 알아봤습니다.

2022.09.06 - [파이썬과 주식] - 10. 파이썬 반복문을 이용한 주가 데이터 한꺼번에 다운로드 (2)

 

10. 파이썬 반복문을 이용한 주가 데이터 한꺼번에 다운로드 (2)

지난회차에서 반복문을 이용하여 여러 종목을 한꺼번에 다운로드 받아봤습니다. 2022.09.01 - [파이썬과 주식] - 9. 반복문을 이용하여 여러 종목 주가 데이터 받기(1) 9. 반복문을 이용하여 여러 종

pmxsg.tistory.com

이번 회차에는 반복문을 이용하여 주가 비교 하는 법을 알아보겠습니다.

주가를 비교할 종목은 지난 회차에 썼던 SK이노베이션, 현대모비스, SK 등 세 종목을 사용하겠습니다.

stocks = { "sk이노베이션" : "096770", "현대모비스":"012330","SK":"034730" }

 

1. 판다스 DataFrame

 

판다스 DataFrame에 대해서는 지난 회차 "주가데이터에 이동평균 추가하기"에서 알아봤습니다.

2022.06.15 - [파이썬과 주식] - 4. 주가 데이터에 이동 평균 추가하기 feat. 판다스 Pandas

 

4. 주가 데이터에 이동 평균 추가하기 feat. 판다스 Pandas

※ 늦게라도 "코딩"을 배워봐야겠다는 사람이 있다면 혹시라도 도움이 될까 해서 그 동안 알게 된 내용을 공유하려고 합니다. 저는 50대이고 코딩시작은 2021년 11월 부터입니다. 이제 코딩이란 것

pmxsg.tistory.com

 

데이터 프레임은 행과 열로 이루어진 표 형태입니다.(1) DataFrame 생성하기생성하는 법은  "DataFrame( )" 으로 데이터프레임을 선언합니다.

 사용법은 

   변수 = pandas.DataFrame( ) 

형식으로 사용합니다.

import pandas as pd
data = pd.DataFrame()

"data" 란 이름의 데이터프레임을 생성하였습니다.


 

(2) 열(Column) 추가하기

열을 추가하는 방법은

데이터프레임이름["열(Column) 이름"] = "값"

형태로 기존에 없었던 이름을 대괄호[ ] 안에 넣고 들어갈 내용을 등호( = )로 이어주면 됩니다.

import FinanceDataReader as fdr

df = fdr.DataReader('034730','2021-01-01','2022-08-31')

df

"SK"의 주가 데이터를 데이터 프레임으로 다운로드 받았습니다.

앞에 만들었던 "data" 란 데이터 프레임에 SK 주가데이터 중 종가(Close) 부분을 SK라는 이름으로 추가하겠습니다.

import FinanceDataReader as fdr
import pandas as pd

data = pd.DataFrame()
df = fdr.DataReader('034730','2021-01-01','2022-08-31')

data['SK'] = df['Close']

data


2. 반복문 For

 

 반복문을 이용해서, SK이노베이션 종가와 현대모비스 종가를 위 데이터 프레임 data 안에 넣어보겠습니다.

import FinanceDataReader as fdr
import pandas as pd

stocks = { "SK이노베이션" : "096770", "현대모비스":"012330","SK":"034730" }
data = pd.DataFrame()

for i in stocks:
    code = stocks[i]
    df = fdr.DataReader(code,'2021-01-01','2022-08-31')
    data[i] = df["Close"]

data

 

반복문의 변수 i 는 딕셔너리 stocks 안에 key값을 순차적으로 반환합니다. 즉, SK이노베이션, 현대모비스,SK 순으로 실행합니다. 

stocks[i] 는 각각의 value인 "096770","012330","034730"을 반환합니다.data[i]에는 "SK이노베이션, 현대모비스,SK " 라는 이름의 열(Column)이 생성되고, 각각에는 df['Close'] 의 값인 종가가 들어가게 됩니다.

3. 그래프 그리기

 

 

import FinanceDataReader as fdr
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 = {"SK이노베이션":"096770","현대모비스":"012330","SK":"034730"}
data=pd.DataFrame()

for i in stocks:
    code = stocks[i]
    df = fdr.DataReader(code,'2021-01-01','2022-08-31')
    data[i] = df["Close"]
    
data.to_csv("주가비교.csv")

plt.figure(figsize=(15,10))
plt.xticks(rotation=45)
plt.plot(data["SK이노베이션"], label="SK이노베이션", color='#CD5C5C')
plt.plot(data["현대모비스"], label="현대모비스")
plt.plot(data["SK"], label="SK")
plt.xlabel('20210401~20220419', color='#CD5C5C', loc='right') #left, center, right
plt.ylabel('단위: 원', color='#CD5C5C', loc='top') # top, center, bottom
plt.legend()
plt.title("주가 비교", color='green')
plt.grid(axis='y',linestyle='--',color='purple')
plt.savefig("주가비교.png",dpi=100)

 

4.  subplots ( )

 

subplots( ) 함수는 여러 개의 그래프를 하나의 그림 안에 나타낼 때 사용합니다.

subplot( ) 과 subplots( ) 둘 다 여러 개의 그래프를 하나의 그림 안에 그리는 함수 이지만, 사용법이 약간 다릅니다. 여기서는 subplots( ) 를 사용하여 그래프를 그려보겠습니다.

사용법은,

import matplotlib.pyplot as plt

fig,ax = plt.subplots(nrows=2, ncols =2)

plt.subplots(rows , cols) : 만들고자하는 갯수를 앞에는 줄, 뒤에는 열 순으로 넣어주면 됩니다.

import matplotlib.pyplot as plt

fig,ax = plt.subplots(3,1)

nrows, ncols 없이 순서대로 숫자만 넣어줘도 됩니다.

subplots( ) 함수는 두 개의 값을 생성합니다.  하나는 figure 값으로 전체를 나타내는 그림이고, 또 하나는 부분(축)을 의미하는 axes 값입니다. 각각 fig, ax로 받습니다. 이름을 중요하지 않고  순서가 중요합니다. 앞쪽이 figure, 뒤쪽이 axes 입니다.

축을 공유하는 법 : sharex, sharey

import matplotlib.pyplot as plt

fig,ax = plt.subplots(nrows=2, ncols =2, sharey=True)

y축 공유는 sharey = True , 

import matplotlib.pyplot as plt

fig,ax = plt.subplots(nrows=2, ncols =2, sharey=True, sharex=True)

x축 공유는 sharex =True

import matplotlib.pyplot as plt

fig,ax = plt.subplots(3,1,sharex=True)

x축 공유는 sharex =True


 

앞선 SK이노베이션, 현대모비스,SK 종가를 따로 분리해서 그래프를 그려보겠습니다.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("주가비교.csv")
df.set_index('Date',inplace=True)
fig,(ax1,ax2,ax3) = plt.subplots(3,1,sharex=True)
df.plot(y='SK이노베이션', ax=ax1)
df.plot(y="현대모비스", ax=ax2)
df.plot(y='SK',ax=ax3)

 

 

댓글