카테고리 없음

[Python] Python을 활용한 주식 데이터 시각화: Yahoo Finance에서 캔들 차트 그리기

indigenthuman 2024. 9. 1. 15:34

Python을 활용한 주식 데이터 시각화: Yahoo Finance에서 캔들 차트 그리기

주식 데이터를 분석하고 시각화하는 것은 금융 시장에서의 투자 결정을 내리는 데 중요한 과정입니다. 이번 블로그에서는 Yahoo Finance에서 주식 데이터를 가져와 Python을 이용해 캔들 차트를 그리는 방법을 설명하겠습니다. 이 과정에서는 yfinance 라이브러리로 데이터를 다운로드하고, mplfinance 라이브러리로 차트를 그리게 됩니다.

1. 필요한 라이브러리 설치

먼저, 주식 데이터를 가져오고 시각화하기 위해 필요한 라이브러리인 pandas, yfinance, mplfinance를 설치해야 합니다. 다음 명령어를 사용해 라이브러리를 설치할 수 있습니다.

pip install pandas yfinance mplfinance

2. Yahoo Finance에서 주식 데이터 가져오기

2.1. 주식 데이터 다운로드

yfinance 라이브러리는 Yahoo Finance에서 주식 데이터를 쉽게 가져올 수 있게 해줍니다. 이번 예제에서는 코스닥에 상장된 Peptron (087010.KQ)의 데이터를 가져옵니다.

import pandas as pd
import yfinance as yf

# 데이터 다운로드
df = yf.download('087010.KQ', start='2024-07-19', end='2024-09-01')

위 코드는 087010.KQ 종목의 2024년 7월 19일부터 2024년 9월 1일까지의 주식 데이터를 다운로드합니다. yfinance 라이브러리는 날짜를 지정해 필요한 기간의 데이터를 손쉽게 가져올 수 있습니다.

3. 데이터 클렌징 및 정렬

데이터를 다운로드한 후, 차트를 그리기 전에 필요한 데이터만 선택하고 정렬하는 과정을 거쳐야 합니다. 이 단계에서는 결측치를 제거하고, 최근 30일간의 데이터를 사용합니다.

# 데이터 클렌징 및 정렬
df = df.dropna()
df = df.iloc[:30]  # 처음 30개의 행 선택
df = df.rename(columns={'Open': 'Open', 'High': 'High', 'Low': 'Low', 'Close': 'Close', 'Volume': 'Volume'})
df.index = pd.to_datetime(df.index)  # 인덱스를 datetime 형식으로 변환
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

위 코드에서는:

  • dropna(): 결측치가 있는 행을 제거합니다.
  • iloc[:30]: 처음 30개의 데이터만 선택합니다.
  • rename(columns={...}): 필요한 열의 이름을 설정합니다.
  • pd.to_datetime(df.index): 인덱스를 datetime 형식으로 변환하여 시간에 따른 데이터 분석이 가능하도록 합니다.
  • [['Open', 'High', 'Low', 'Close', 'Volume']]: 시각화에 필요한 열만 선택합니다.

4. 캔들 차트 그리기

이제 준비된 데이터를 바탕으로 mplfinance 라이브러리를 사용해 캔들 차트를 그릴 수 있습니다. 아래 코드는 이를 구현하는 방법을 보여줍니다.

import mplfinance as mpf

# 캔들 차트 출력
kwargs = dict(title='Peptron chart', type='candle', mav=(2, 4, 6), volume=True, ylabel='ohlc candles')
mc = mpf.make_marketcolors(up='r', down='b', inherit=True)
s = mpf.make_mpf_style(marketcolors=mc)
mpf.plot(df, **kwargs, style=s)

위 코드에서는 몇 가지 주요 설정을 적용하여 캔들 차트를 생성합니다:

  • type='candle': 차트 유형을 캔들 차트로 설정합니다.
  • mav=(2, 4, 6): 2일, 4일, 6일 이동평균선을 함께 표시합니다.
  • volume=True: 거래량을 차트에 함께 표시합니다.
  • marketcolors=mc: 상승일은 빨간색(up='r'), 하락일은 파란색(down='b')으로 표시합니다.

mplfinance의 이와 같은 설정을 통해 매우 직관적이고 효과적인 주식 시각화를 할 수 있습니다.

전체 코드 및 결과

import pandas as pd
import yfinance as yf
import mplfinance as mpf

# 데이터 다운로드
df = yf.download('087010.KQ', start='2024-07-19', end='2024-09-01')

# 데이터 클렌징 및 정렬
df = df.dropna()
df = df.iloc[:30]  # 처음 30개의 행 선택
df = df.rename(columns={'Open': 'Open', 'High': 'High', 'Low': 'Low', 'Close': 'Close', 'Volume': 'Volume'})
df.index = pd.to_datetime(df.index)  # 인덱스를 datetime 형식으로 변환
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

# 캔들 차트 출력
kwargs = dict(title='Peptron chart', type='candle', mav=(2, 4, 6), volume=True, ylabel='ohlc candles')
mc = mpf.make_marketcolors(up='r', down='b', inherit=True)
s = mpf.make_mpf_style(marketcolors=mc)
mpf.plot(df, **kwargs, style=s)

위 과정을 하나의 코드로 통합한 전체 코드입니다

 

전체 코드의 결과

 

 

결론

이번 블로그에서는 Yahoo Finance에서 주식 데이터를 다운로드하여, 이를 바탕으로 파이썬을 활용해 캔들 차트를 그리는 방법을 살펴보았습니다. 저번에 BeautifulSoup를 이용하여 NAVER FINANCE에서 데이터를 크롤링해 얻은 결과와 같다는것을 알수있습니다.

 

Python과 yfinance, mplfinance 같은 라이브러리를 활용하면 주식 데이터를 손쉽게 분석하고 시각화할 수 있습니다. 특히, 캔들 차트를 통해 주식의 가격 변동을 직관적으로 이해할 수 있으며, 이동평균선이나 거래량 같은 추가적인 정보를 통해 더 깊이 있는 분석이 가능합니다. 이 방법을 응용하여 다양한 종목의 데이터를 분석하고, 자신만의 투자 전략을 세워보시길 바랍니다.