안녕하세요. 인턴개구리입니다.
오늘은 주가 이동평균선 그리는 법에 대해서 알아보겠습니다.
1. 주식 데이터 import 하기
주가 데이터는 다양한 방식으로 가져올 수 있는데요.
저는 두가지 패키지를 주로 이용합니다.
from pykrx import stock
import FinanceDataReader as fdr
그 중에 지금은 pykrx를 사용하겠습니다.
https://github.com/sharebook-kr/pykrx/blob/master/readme.MD
sharebook-kr/pykrx
KRX 주식 정보 스크래핑. Contribute to sharebook-kr/pykrx development by creating an account on GitHub.
github.com
(pykrx에 대한 자세한 설명은 여기서! ↑)
df = stock.get_market_ohlcv_by_date("20200601", "20201229", "005930")
- df : 데이터 명(아무거나 적으시면 됩니다.)
- stock : 패키지명
- get_market_ohlcv_by_date : 일자별(date) 시가(O), 고가(H), 저가(L), 종가(C), 거래량(V)를 가져옵니다.
- "20200601" : 시작일
- "20201229" : 종료일
- "005930" : 종목코드( "005930"은 삼성전자 )
그럼 다음과 같은 결과를 도출합니다.
2. 주가이동평균선 구하기
주가이동평균선이 무엇인가에 대해서는 저도 아직 주식 초보라 설명은 못해드리겠네요 ㅠㅠ
df['주가이동평균선'] = df['종가'].rolling(window=5).mean()
- rolling(window=정수) : '정수'행 앞의 데이터를 가져온다.
- mean() : 평균을 낸다
df의 '종가'라는 칼럼에서 자신을 포함한 '5'(다섯)행 데이터를 rolling하여(?) 그 데이터를 모아 평균(mean)을 내고, 그것을 df의 '주가이동평균선'이라는 새로운 칼럼에 담는 것입니다.
그럼 다음과 같은 결과를 도출합니다.
즉, 6월 5일 데이터는 6월 1일~5일 데이터를 담아서 평균을 매긴 것이죠.
3. 그래프 그리기
import matplotlib.pyplot as plt
matplotlib이라는 패키지를 import하고 plt라는 이름으로 간소화합니다.
matplotlib를 이용하면 다양하게 꾸밀 수 있지만 저는 일단 그래프만 나올 수 있도록 간단하게만 설명하겠습니다.
plt.plot(df.index, df['주가이동평균선'])
plt.plot(df.index, df['종가'])
plot을 그리는데, X축은 df의 index로, Y축은 df의 '주가이동평균선'으로 그래프를 표현합니다. 그 다음 Y축을 '종가'로 하여 한번 더 그래프를 표현합니다.
그러면 다음과 같은 결과를 도출합니다.
꾸불꾸불한 빨간색이 일반적인 '종가'이고, 조금 더 부드러워진 파란선이 '주가이동평균선'입니다.
결과가 나오긴 했지만, 조금 더 자세히 보고 싶습니다. 그렇다면 많이 복붙해봅시다.
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(20,5))
plt.plot(df.index, df['주가이동평균선'], 'b--', label='Close')
plt.plot(df.index, df['종가'], 'y--', label='Moving Price')
plt.xlabel('Date')
plt.ylabel('price')
plt.title('Close and Moving Price')
plt.legend(loc='upper right')
- plt.figure : 그림의 사이즈를 지정해줍니다.
- 'b--' : blue색깔로 ------ 형태의 점선 그래프를 도출합니다. ( 'g-'는 green의 선그래프, 'y*'는 yellow의 별그래프 등 다양하게 표시가능합니다. 참고로 black은 k입니다.)
- xlabel : X축의 라벨을 지정해줍니다.
- ylabel : Y축의 라벨을 지정해줍니다.
- Title : 그래프 맨 위에 타이틀을 지정해줍니다.
- legend(loc='upper right') : 오른쪽(right) 위(upper)에 범례를 작성합니다. 이 때는 반드시 그래프 그릴 때 label을 그려줘야 합니다.(xlabel, ylabel 말고 그래프 코드 안에있는 라벨 label='Close' 같은 것)
이러한 결과가 도출됩니다.
코드를 보고싶으신대로 커스터마이징 할 수 있습니다.
저도 아직 배우는 입장이지만, 제 지식을 공유하는 것에 즐거움을 느끼고 여러분들과 공유하고 있습니다. 제 포스팅이 도움이 되셨으면 좋겠습니다.
'컴퓨터언어 > Python' 카테고리의 다른 글
[Python][pandas] 1. pykrx 패키지로 주식 상승폭이 큰 날짜 확인하기 (엔터주식 왜 올랐지? part 1) (0) | 2023.11.04 |
---|