본문 바로가기
주식 분석/파이썬 활용 기초

[파이썬 주식 활용] 이동 평균 구하고 그래프 그리기

by SMCon 2023. 9. 4.
728x90
반응형

지난 포스팅에 이어서 불러온 주식으로 이동 평균을 구하고 그래프를 그려보도록 하겠습니다.

CSV로 저장된 주식정보를 불러오는 것부터 시작합니다. 주식정보를 불로오는 방법을 모른다면 지난 포스팅 참고 바랍니다.

2023.09.02 - [주식 분석/파이썬 활용 기초] - [파이썬 주식 활용] 불러온 주식 정보 csv 저장

 

1. 이동 평균 구하기

먼저 이동 평균을 구할 주식을 불러옵니다.

import pandas as pd #pandas 모듈 불러오기
dir_stock = 'stocks' # 주식 정보가 저장된 폴더
symbol = 'AAPL' #주식 심볼

df = pd.read_csv('{}/{}.csv'.format(dir_stock, symbol), parse_dates=True, index_col=0) #CSV로 저장된 정보 불러오기

index_dates = []
for index_date in df.index:
    index_dates.append(index_date.date())

df.index = index_dates
df.index = pd.to_datetime(df.index)

print(df.head(5)) # 저장된 정보 상단 5줄 출력

 

이동평균은 Rolling을 통해서 구할 수 있습니다. Rolling window=100.mean()의 의미는 100일 치의 평균값을 구해준다는 것입니다. 시작일이 2020년 1월 1일이라면, 2020년 1월 1일 평균값은 1월 1일부터 100일 이전까지의 값들의 평균이 됩니다. 이런 경우 초기의 값들은 100일 치의 평균을 구할 수 없기 때문에 그런 경우는 가능한 일수만큼의 평균을 구해주게 만드는 것이 "min_periodes=0"입니다. 빼게 되면 초기 값들은 NaN으로 표시됩니다. 

df['100ma'] = df['Close'].rolling(window=100, min_periods=0).mean() #100일 이동평균 구하기
print(df.head(5)) # 저장된 정보 상단 5줄 출력

"""
출력
                 Open       High        Low  ...  Dividends  Stock Splits      100ma
2014-01-24  17.368820  17.419610  17.078818  ...        0.0           0.0  17.120203
2014-01-27  17.245603  17.393895  17.110164  ...        0.0           0.0  17.189643
2014-01-28  15.950471  16.146104  15.740727  ...        0.0           0.0  16.752968
2014-01-29  15.799673  15.906896  15.632569  ...        0.0           0.0  16.489563
2014-01-30  15.755469  15.879622  15.572376  ...        0.0           0.0  16.325438

[5 rows x 8 columns]
"""

 

2. 그래프 그리기

import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((6,1),(0,0), rowspan=5, colspan = 1)
ax2 = plt.subplot2grid((6,1),(5,0), rowspan=5, colspan = 1, sharex=ax1)

ax1.plot(df.index, df['Close'])
ax1.plot(df.index, df['100ma'])
ax2.bar(df.index, df['Volume'])

matplotlib을 활용하면 다양한 형태의 그림을 그릴 수 있습니다. ax2를 bar의 형태로 불러와서 아래에 위치시키고, sharex=ax1 이라고 넣어주면 X 축을 ax1그래프와 공유하게 됩니다. 그래서 그래프 상에서 확대를 하면 아래의 바들도 같이 기간이 확대됩니다.

 

728x90
반응형