본문 바로가기
파이썬

Pandas를 활용한 파이썬 주식 데이터 분석 | Python 주가 데이터 활용 가이드

by ㈜㎹Ω∞ 2025. 3. 2.
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