728x90
📌 개요
📈 주식 투자할 때, 데이터 분석을 활용해 본 적 있나요? Pandas를 이용하면 손쉽게 주가를 분석하고 트렌드를 예측할 수 있습니다!
파이썬(Python)은 금융 데이터 분석에 최적화된 언어 중 하나이며, Pandas 라이브러리를 사용하면 주가 데이터를 불러오고, 가공하며, 시각화할 수 있습니다.
이 글에서는 Pandas를 활용한 주식 데이터 분석 방법을 단계별로 설명하며, 실무에서도 활용할 수 있는 기술을 다룹니다.
🔍 1. 주식 데이터 불러오기 (yfinance 활용)
▶ 1-1. 필요 라이브러리 설치
pip install pandas yfinance matplotlib seaborn
▶ 1-2. yfinance
를 이용한 주식 데이터 다운로드
Yahoo Finance에서 제공하는 API를 사용하여 삼성전자(005930.KS) 주식 데이터를 불러올 수 있습니다.
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
import seaborn as sns
import platform
# OS에 따른 한글 폰트 설정
if platform.system() == 'Windows':
plt.rc('font', family='Malgun Gothic')
elif platform.system() == 'Darwin': # MacOS
plt.rc('font', family='AppleGothic')
else: # Linux
plt.rc('font', family='NanumGothic')
plt.rc('axes', unicode_minus=False) # 마이너스 기호 깨짐 방지
# 삼성전자 주식 데이터 불러오기
ticker = "005930.KS" # 한국거래소(KRX) 종목 코드
df = yf.download(ticker, start="2023-01-01", end="2024-01-01")
# 데이터 확인
print(df.head())
🔎 2. Pandas를 활용한 데이터 분석
▶ 2-1. 주가 데이터 기초 통계 확인
print(df.describe())
▶ 2-2. 날짜별 특정 기간 필터링
df_filtered = df.loc["2023-06-01":"2023-12-31"]
print(df_filtered.head())
📊 3. 주식 데이터 시각화 (Matplotlib & Seaborn)
▶ 3-1. 종가(Close Price) 변동 그래프
df["Close"].plot(figsize=(10,5), title="삼성전자 주가 변동", xlabel="날짜", ylabel="종가")
plt.show()
▶ 3-2. 이동평균선 (SMA & EMA) 추가
df["SMA_20"] = df["Close"].rolling(window=20).mean() # 단순이동평균선
df["EMA_20"] = df["Close"].ewm(span=20, adjust=False).mean() # 지수이동평균선
df[["Close", "SMA_20", "EMA_20"]].plot(figsize=(10,5), title="삼성전자 주가 이동평균선", xlabel="날짜", ylabel="가격")
plt.show()
▶ 3-3. 변동률 분석 (Daily Return)
df["Daily Return"] = df["Close"].pct_change()
# 히스토그램 시각화
sns.histplot(df["Daily Return"].dropna(), bins=50, kde=True)
plt.title("일일 수익률 히스토그램")
plt.xlabel("일일 수익률")
plt.ylabel("빈도")
plt.show()
✅ 4. 결론 및 완성된 코드
📌 이번 글에서 배운 내용
yfinance
를 이용한 주식 데이터 다운로드 방법- Pandas를 활용한 주가 데이터 분석 및 이동평균선 적용
- 변동률 분석 및 Seaborn을 활용한 데이터 시각화
🎯 추가 학습 추천
- 거래량 분석 및 OBV(On-Balance Volume) 지표 활용
- RSI(상대강도지수) 및 MACD(이동평균수렴·확산) 분석
- 머신러닝을 활용한 주가 예측 모델 구축
🔥 1, 2, 3을 합친 완성된 코드
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
import seaborn as sns
import platform
# OS별 한글 폰트 설정
if platform.system() == 'Windows':
plt.rc('font', family='Malgun Gothic')
elif platform.system() == 'Darwin': # MacOS
plt.rc('font', family='AppleGothic')
else: # Linux
plt.rc('font', family='NanumGothic')
plt.rc('axes', unicode_minus=False) # 마이너스 기호 깨짐 방지
# 데이터 다운로드
ticker = "005930.KS"
df = yf.download(ticker, start="2023-01-01", end="2024-01-01")
# 이동평균선 계산
df["SMA_20"] = df["Close"].rolling(window=20).mean()
df["EMA_20"] = df["Close"].ewm(span=20, adjust=False).mean()
# 변동률 계산
df["Daily Return"] = df["Close"].pct_change()
# 그래프 시각화
fig, ax = plt.subplots(2, 1, figsize=(10, 10))
df["Close"].plot(ax=ax[0], title="삼성전자 주가 변동", xlabel="날짜", ylabel="종가")
df[["Close", "SMA_20", "EMA_20"]].plot(ax=ax[1], title="삼성전자 주가 이동평균선", xlabel="날짜", ylabel="가격")
plt.show()
# 변동률 히스토그램 시각화
sns.histplot(df["Daily Return"].dropna(), bins=50, kde=True)
plt.title("일일 수익률 히스토그램")
plt.xlabel("일일 수익률")
plt.ylabel("빈도")
plt.show()
📢 지금 Pandas를 설치하고, 여러분이 관심 있는 종목을 직접 분석해보세요! 🚀
🔎 파이썬의 다른 글이 궁금하다면? 클릭! 👉
728x90
'파이썬' 카테고리의 다른 글
파이썬을 활용한 주식 백테스팅: 실전 가이드 (0) | 2025.03.03 |
---|---|
파이썬으로 금융 뉴스 크롤링하는 방법 (1) | 2025.03.02 |
파이썬 mediapipe 패키지 사용법 (0) | 2022.08.05 |
파이썬으로 드론 조종하기 (얼굴인식) (0) | 2022.08.04 |
파이썬으로 드론 조종하기 (키보드) (0) | 2022.08.03 |