[Step 1] 데이터를 선 그래프로 시각화하는 실습 - yfinance + matplotlib
개발자나 데이터 분석가만 이쁜 그래프를 그릴 수 있는 건 아닙니다. 정말 간단한 지식이면 누구나 화려한 시각화를 만들 수 있어요. Step 1에서는 선 그래프 그리는 방법론을 주식 데이터 예제로 따라해봅니다.
시작하며 - 누구나 할 수 있는 데이터 시각화
"이쁜 그래프는 개발자나 데이터 분석가만 그릴 수 있는 거 아냐?" 많은 분들이 이렇게 생각합니다. 하지만 천만의 말씀입니다.
정말 간단한 지식만 있으면, 누구나 화려하고 전문적인 그래프를 그릴 수 있습니다. 이 글은 데이터 시각화 Step 1로, 가장 기본이 되는 선 그래프 그리는 방법을 다룹니다.
예제로는 주식 가격 데이터를 사용하지만, 핵심은 선 그래프를 그리는 방법론입니다. 체중 기록, 매출 추이, 온도 변화—어떤 데이터든 같은 방식으로 시각화할 수 있습니다.
아무것도 설치하지 않고, Google Colab만으로 30분이면 완성할 수 있습니다. 코딩 경험이 전혀 없어도 괜찮습니다. 저도 처음엔 그랬으니까요.
완성된 주식 그래프 - 삼성전자 2024년 추이를 한눈에!
개발 환경 세팅하기 - Google Colab으로 시작하기
코드를 작성하기 전에, 먼저 필요한 도구들을 준비해야 합니다. 하지만 걱정 마세요. 아무것도 설치할 필요가 없습니다!
Google Colab은 브라우저만 있으면 바로 사용할 수 있는 무료 파이썬 환경입니다. 구글 계정만 있으면 누구나 사용할 수 있어요.
2.1 Google Colab 시작하기
브라우저에서 colab.research.google.com에 접속하세요. 구글 계정으로 로그인하면 바로 사용할 수 있습니다.
화면 왼쪽 상단의 "+ New notebook" 버튼을 클릭하면 새 노트북이 열립니다.
파일명을 stock_chart.ipynb로 변경하세요.
2.2 필요한 라이브러리 설치
Colab은 이미 Python이 설치되어 있지만, 우리가 사용할 라이브러리는 추가로 설치해야 합니다. 첫 번째 셀에 다음 코드를 입력하고 Shift + Enter를 누르세요:
!pip install yfinance matplotlib
앞에 느낌표(!)가 붙은 명령어는 "시스템 명령어"를 의미합니다.
Colab에서는 이렇게 !pip install로 쉽게 라이브러리를 설치할 수 있어요.
각 라이브러리의 역할은 다음과 같습니다:
- yfinance: 주식 데이터 가져오기
- matplotlib: 데이터를 그래프로 그리기
설치가 완료되면 이런 메시지가 나타납니다:
2.3 Colab 사용 팁
Colab은 주피터 노트북과 동일한 방식으로 작동합니다:
- Shift + Enter: 현재 셀 실행하고 다음 셀로 이동
- Ctrl + Enter: 현재 셀만 실행
- + Code 버튼: 새로운 코드 셀 추가
코드를 작성하면 자동으로 구글 드라이브에 저장되므로, 언제든지 다시 열어서 작업할 수 있습니다.
yfinance로 주식 데이터 가져오기 - 단 3줄로 끝내기
이제 본격적으로 데이터를 가져와볼게요. 놀랍게도, 주식 데이터를 가져오는 건 정말 간단합니다.
3.1 yfinance 사용법
Colab의 새 셀(+ Code 버튼으로 추가)에 다음 코드를 입력해보세요:
import yfinance as yf
# 삼성전자 2024년 데이터 가져오기
stock = yf.download("005930.KS", start="2024-01-01", end="2024-12-31")
stock.head() # 처음 5개 데이터 확인
코드를 작성한 후 Shift + Enter를 누르면 실행됩니다. 잠시 기다리면 데이터가 다운로드되고, 화면에 표가 나타납니다.
여기서 "005930.KS"는 삼성전자의 종목 코드입니다.
한국 거래소에 상장된 종목은 뒤에 .KS를 붙입니다.
(코스닥은 .KQ를 사용합니다)
💡 Colab 꿀팁: Colab에서는 마지막 줄에 변수명만 쓰면 자동으로 출력됩니다.
그래서 print(stock.head()) 대신 stock.head()만 써도 됩니다!
3.2 데이터 구조 이해하기
가져온 데이터는 이런 구조로 되어 있습니다:
- Open: 시가 (장이 시작할 때의 가격)
- High: 고가 (하루 중 가장 높았던 가격)
- Low: 저가 (하루 중 가장 낮았던 가격)
- Close: 종가 (장이 마감될 때의 가격) ← 우리가 사용할 값!
- Volume: 거래량 (얼마나 많이 거래되었는지)
우리는 주로 Close(종가)를 사용해서 그래프를 그립니다. 종가가 그날의 마지막 가격이기 때문에, 전체적인 추이를 보기에 가장 좋습니다.
첫 번째 그래프 그리기 - "짜잔~" 순간의 감동
드디어 그래프를 그려볼 시간입니다! 이 순간이 가장 재미있는 부분이에요.
4.1 가장 간단한 선 그래프
새로운 셀에 다음 코드를 입력하세요:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 한글 폰트 설정 (Google Colab용)
plt.rcParams['font.family'] = 'DejaVu Sans'
plt.rcParams['axes.unicode_minus'] = False
# 그래프 생성
plt.figure(figsize=(12, 6))
plt.plot(stock.index, stock['Close'], color='#0078D7', linewidth=2, label='Samsung Electronics')
# 스타일링
plt.title('Samsung Electronics 2024 Stock Price', fontsize=16, pad=20)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Close Price (KRW)', fontsize=12)
plt.grid(True, alpha=0.3)
plt.legend(loc='best')
# X축 날짜 포맷 (읽기 쉽게)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=2))
plt.xticks(rotation=45)
plt.tight_layout()
plt.show() # 짜잔~!
코드를 입력하고 실행할 준비 완료!
Shift + Enter를 누르면... 짜잔! 파란색 선 그래프가 나타납니다!
이제 삼성전자의 2024년 주가 추이를 한눈에 볼 수 있습니다. 1월부터 7월까지 상승하다가, 하반기에 급락한 모습이 명확히 보이죠?
첫 번째 그래프 완성! 이미 꽤 괜찮아 보이지 않나요?
코드 이해하기 - 각 줄이 하는 일
코드를 한 줄씩 뜯어볼게요. 어렵지 않습니다!
5.1 라이브러리 불러오기
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
• matplotlib.pyplot: 그래프를 그리는 핵심 도구
• matplotlib.dates: 날짜를 예쁘게 표시하는 도구
5.2 폰트 설정
plt.rcParams['font.family'] = 'DejaVu Sans'
plt.rcParams['axes.unicode_minus'] = False
Google Colab에는 한글 폰트가 없어서, 기본 영문 폰트를 사용합니다.
axes.unicode_minus = False는 마이너스 기호가 깨지지 않게 하는 설정이에요.
5.3 그래프 크기와 선 그리기
plt.figure(figsize=(12, 6))
plt.plot(stock.index, stock['Close'], color='#0078D7', linewidth=2)
• figsize=(12, 6): 가로 12, 세로 6 인치 크기
• color='#0078D7': 파란색
• linewidth=2: 선 두께 2
5.4 날짜 포맷 설정
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=2))
• X축을 "2024-01" 형식으로 표시
• 2개월 간격으로 날짜 표시 (너무 빽빽하지 않게)
응용하기 - 다른 종목도 그려볼까요?
이제 코드를 이해했으니, 다른 종목도 그려볼 수 있습니다!
6.1 미국 주식 그리기
한국 주식은 뒤에 .KS를 붙였죠?
미국 주식은 티커 심볼만 쓰면 됩니다:
# 애플 주식
apple = yf.download("AAPL", start="2024-01-01", end="2024-12-31")
plt.figure(figsize=(12, 6))
plt.plot(apple.index, apple['Close'], color='#A2AAAD', linewidth=2)
plt.title('Apple Inc. 2024 Stock Price', fontsize=16)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Close Price (USD)', fontsize=12)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
6.2 여러 종목 비교하기
삼성전자와 SK하이닉스를 한 그래프에 그려볼까요?
samsung = yf.download("005930.KS", start="2024-01-01", end="2024-12-31")
hynix = yf.download("000660.KS", start="2024-01-01", end="2024-12-31")
plt.figure(figsize=(12, 6))
plt.plot(samsung.index, samsung['Close'], color='#0078D7', linewidth=2, label='Samsung')
plt.plot(hynix.index, hynix['Close'], color='#E74C3C', linewidth=2, label='SK Hynix')
plt.title('Semiconductor Giants 2024', fontsize=16)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Close Price (KRW)', fontsize=12)
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
plt.plot()을 두 번 쓰면 두 선이 그려집니다!
label을 추가하고 plt.legend()를 쓰면 범례가 나타나요.
마무리 - 이제 뭘 할 수 있을까?
축하합니다! 이제 할 수 있는 것:
- 원하는 데이터를 가져올 수 있고
- 선 그래프로 시각화할 수 있고
- 여러 데이터를 비교할 수 있습니다
다음 단계로 나아가기
기본을 마스터했으니, 이제 더 재미있는 것들을 시도해볼 수 있습니다:
- 이동평균선 추가: 20일, 60일 이동평균선을 그려서 추세를 파악해보세요
- 거래량 함께 보기: 서브플롯(subplot)을 사용해서 가격과 거래량을 함께 표시할 수 있습니다
- 해외 주식:
"AAPL"(애플),"TSLA"(테슬라) 같은 미국 주식도 똑같은 방법으로 가능합니다 - HTML로 저장:
fig.write_html("my_chart.html")로 저장하면 다른 사람에게 공유할 수 있습니다
흑섬 브리딩에서의 활용
저는 이 방법으로 레오파드 게코의 체중 증가 그래프를 그리고 있습니다. 주식이든, 브리딩 기록이든, 운동 기록이든—데이터만 있으면 뭐든 시각화할 수 있습니다.
시각화는 데이터를 이해하는 가장 빠른 방법입니다. 숫자로만 보면 놓쳤을 패턴들이, 그래프로 그리면 한눈에 보입니다.
다음 시리즈 예고
다음 글에서는 "산점도를 이용한 데이터 관계 표현" (Step 2)을 다뤄볼 예정입니다. 두 변수 사이의 상관관계를 시각화하는 방법을 배워볼 거예요.
궁금한 점이 있거나, 이런 내용도 다뤄줬으면 좋겠다는 의견이 있다면 인스타그램 DM 주세요!
