본문 바로가기
IT 개발 이야기/Python

금융 데이터 분석을 위한 Python 프로그래밍: 주식 및 환율 데이터 수집 방법

by 개발자 Aiden 2023. 7. 23.
반응형

이 글에서는 Python을 활용한 금융 데이터 분석에 초점을 맞추어, 주식 및 환율 데이터를 어떻게 수집하고 저장하는지에 대한 실질적인 방법을 제공합니다. FinanceDataReader라는 강력한 라이브러리를 활용하여, 실제로 Python 코드를 작성하며 데이터를 수집하는 과정을 단계별로 설명하고 있습니다.

또한, 이러한 데이터를 어떻게 활용할 수 있는지에 대한 다양한 방안을 제시하고 있어, 데이터 분석에 관심이 있는 분들에게 유익한 정보를 제공합니다.

금융데이터분석-Python프로그래밍-주식데이터수집


Python과 FinanceDataReader 소개

Python은 데이터 분석에 이상적인 도구로 널리 알려져 있습니다. 그 이유는 Python이 다양한 데이터 분석 라이브러리를 지원하고, 이를 통해 데이터 수집, 전처리, 분석, 시각화 등의 과정을 간편하게 수행할 수 있기 때문입니다.

이 중에서도 FinanceDataReader는 Python을 사용하여 금융 데이터를 수집하는 데 사용되는 대표적인 라이브러리입니다. FinanceDataReader는 주식 가격, 지수, 환율, 암호화폐 가격, 금 가격 등 다양한 금융 데이터를 지원합니다. 또한, 한국 주식 가격, 미국 주식 가격, 유럽 주식 가격 등 다양한 국가의 금융 데이터를 수집할 수 있습니다.

FinanceDataReader는 데이터를 수집하고 분석하는 데 필요한 복잡한 과정을 간소화하여, 사용자가 쉽게 데이터를 수집하고 분석할 수 있도록 합니다. 이를 통해 우리는 금융 데이터 분석에 필요한 다양한 정보를 쉽게 얻을 수 있습니다. 그렇다면 이렇게 수집된 주식 및 환율 데이터로 우리는 무엇을 할 수 있을까요?

 

데이터 활용 방안: 주식 및 환율 데이터로 무엇을 할 수 있을까?

주식 및 환율 데이터를 활용하면 단순히 시장의 트렌드를 파악하는 것을 넘어, 심도 있는 분석을 통해 투자 결정을 내리는 데 도움이 될 수 있습니다. 다음은 그 예시입니다.

  1. 개인화된 투자 대시보드 개발: Python과 FinanceDataReader를 활용하면, 실시간으로 업데이트되는 주식 가격, 환율, 그리고 이에 영향을 미칠 수 있는 다양한 경제 지표를 한눈에 볼 수 있는 개인화된 투자 대시보드를 개발하는 것이 가능합니다. 이는 나에게 맞는 투자 환경을 구축하는 데 큰 도움이 될 것입니다.
  2. 알고리즘 트레이딩: 수집한 데이터를 기반으로 알고리즘 트레이딩 전략을 개발하고 테스트할 수 있습니다. 예를 들어, 과거 데이터를 바탕으로 기계 학습 모델을 훈련시켜 미래의 주식 가격을 예측하고, 이를 바탕으로 자동 투자 시스템을 구축할 수 있습니다. 이는 투자의 자동화와 최적화를 가능하게 합니다.
  3. 시장 선도 지표 생성: 주식 및 환율 데이터를 분석하여 시장 선도 지표를 생성할 수 있습니다. 이 지표는 특정 주식이나 환율이 상승 또는 하락할 가능성을 미리 알려주는 신호로 작용할 수 있습니다. 이는 시장의 미래 동향을 예측하는 데 도움이 될 것입니다.
  4. 포트폴리오 최적화: 주식 및 환율 데이터를 분석하여 투자 포트폴리오를 최적화하는 데 도움이 될 수 있습니다. 데이터 분석을 통해 각 자산의 기대 수익률과 위험을 측정하고, 이를 바탕으로 최적의 투자 포트폴리오를 구성할 수 있습니다. 이는 투자의 효율성을 극대화하는 데 기여할 것입니다.
반응형

이러한 활용 방안은 Python과 FinanceDataReader를 사용하여 주식 및 환율 데이터를 수집하고 분석하는 데 큰 동기를 제공합니다. 이제 이 도구들을 활용하여 실제로 어떻게 데이터를 수집하는지 알아보겠습니다.

 

환경 설정 및 라이브러리 설치

Python과 FinanceDataReader를 사용하기 위해서는 먼저 Python이 설치되어 있어야 합니다. Python 설치 및 환경 설정에 대한 자세한 내용은 'Python 설치 및 환경설정 가이드'를 참조하시기 바랍니다.

Python 설치가 완료되었다면, 이제 필요한 라이브러리를 설치해야 합니다. Python에는 pip라는 패키지 관리자가 포함되어 있어, 이를 사용하여 필요한 라이브러리를 쉽게 설치할 수 있습니다.

이번 글에서는 FinanceDataReader, beautifulsoup4, matplotlib 라이브러리를 사용합니다. 각각의 라이브러리는 다음과 같은 명령어로 설치할 수 있습니다.

# 주식, 환율, 암호화폐, 종목 리스팅 등 다양한 금융 데이터를 수집할 수 있는 라이브러리
pip install FinanceDataReader

# HTML 및 XML 문서를 파싱하기 위한 Python 라이브러리로 FinanceDataReader에서 내부적으로 사용
pip install beautifulsoup4

# Python에서 데이터를 차트나 플롯으로 시각화하는 라이브러리
pip install matplotlib


각 라이브러리의 설치가 완료되었다면, 이제 주식 데이터와 환율 데이터를 수집하고 시각화하는 작업을 진행할 준비가 되었습니다.

 

주식 데이터 수집: 카카오뱅크 주식 데이터 가져오기

이제 환경 설정이 완료되었으니, 실제로 Python과 FinanceDataReader 라이브러리를 활용하여 주식 데이터를 어떻게 수집하고 시각화하는지에 대해 알아보겠습니다. 이번에는 한국의 인기 주식 중 하나인 카카오뱅크의 주식 데이터를 예시로 들겠습니다.

먼저, FinanceDataReader의 'StockListing' 함수를 사용하여 한국의 주식 코드 목록을 가져옵니다. 그리고 이 목록에서 카카오뱅크의 주식 코드를 찾습니다.

import FinanceDataReader as fdr

# 한국 주식 코드 목록 가져오기
krx = fdr.StockListing('KRX')

# 카카오뱅크 주식 코드 찾기
code = krx[krx['Name'] == '카카오뱅크']['Code'].values[0]
print(code) # 323410


이제 이 코드를 사용하여 카카오뱅크의 주식 데이터를 가져옵니다. FinanceDataReader의 'DataReader' 함수를 사용하면 주식 코드를 입력하여 해당 주식의 데이터를 쉽게 가져올 수 있습니다.

import FinanceDataReader as fdr

# 카카오뱅크 주식 코드: 323410
df = fdr.DataReader('323410')
print(df.head())


위 코드를 실행하면, 카카오뱅크의 주식 데이터를 가져와서 데이터프레임 형태로 출력합니다. 출력된 데이터프레임은 시가, 고가, 저가, 종가, 거래량, 변동률 등의 정보를 포함하고 있습니다.

주식데이터출력화면

※ 출력 정보는 조회 결과 전체 데이터의 처음 5개 행을 출력


특정 기간의 주식 데이터 수집하기

FinanceDataReader의 'DataReader' 함수는 시작 날짜와 종료 날짜를 인자로 받을 수 있습니다. 이를 통해 특정 기간 동안의 주식 데이터를 수집할 수 있습니다. 시작 날짜와 종료 날짜는 'YYYY-MM-DD' 형식의 문자열로 전달하면 됩니다.

다음은 2023년 1월 1일부터 2023년 12월 31일까지의 카카오뱅크 주식 데이터를 수집하는 코드입니다.

import FinanceDataReader as fdr

# 카카오뱅크 주식 코드: 323410
df = fdr.DataReader('323410', '2023-01-01', '2023-12-31')
print(df.tail())


추가로, 아래는 숫자 형식을 변경하고, 필드명을 변경한 코드입니다.

import FinanceDataReader as fdr

# 카카오뱅크 주식 코드: 323410
df = fdr.DataReader('323410', '2023-01-01', '2023-12-31')

# 열 이름을 한글로 변경
df = df.rename(columns={
    'Open': '시가', 'High': '고가', 'Low': '저가',
    'Close': '종가', 'Volume': '거래량', 'Change': '변동률'})

# 숫자 형식 변경
df['시가'] = df['시가'].apply(lambda x: f'{x:,}원')
df['고가'] = df['고가'].apply(lambda x: f'{x:,}원')
df['저가'] = df['저가'].apply(lambda x: f'{x:,}원')
df['종가'] = df['종가'].apply(lambda x: f'{x:,}원')
df['거래량'] = df['거래량'].apply(lambda x: f'{x:,}건')
df['변동률'] = df['변동률'].apply(lambda x: f'{x:.2%}')

print(df.tail())

주식데이터출력화면

이 코드를 실행하면, 카카오뱅크의 최신 5개의 주식 데이터를 가져와서 필드명을 한글로 표시하고, 숫자 형식을 변경하여 출력합니다. 이렇게 변경된 데이터는 보기에 편하고 이해하기 쉽습니다.


주식 데이터를 CSV 파일로 저장하기

수집한 주식 데이터를 CSV 파일로 저장하려면, pandas의 to_csv 함수를 사용하면 됩니다. 다음은 수집한 카카오뱅크 주식 데이터를 CSV 파일로 저장하는 코드입니다.

# CSV 파일로 저장
df.to_csv('kakaobank_stock_data.csv')
더보기

전체코드

import FinanceDataReader as fdr

# 카카오뱅크 주식 코드: 323410
df = fdr.DataReader('323410', '2023-01-01', '2023-12-31')

# 열 이름을 한글로 변경
df = df.rename(columns={
    'Open': '시가', 'High': '고가', 'Low': '저가',
    'Close': '종가', 'Volume': '거래량', 'Change': '변동률'})

# 숫자 형식 변경
df['시가'] = df['시가'].apply(lambda x: f'{x:,}원')
df['고가'] = df['고가'].apply(lambda x: f'{x:,}원')
df['저가'] = df['저가'].apply(lambda x: f'{x:,}원')
df['종가'] = df['종가'].apply(lambda x: f'{x:,}원')
df['거래량'] = df['거래량'].apply(lambda x: f'{x:,}건')
df['변동률'] = df['변동률'].apply(lambda x: f'{x:.2%}')

# CSV 파일로 저장
df.to_csv('kakaobank_stock_data.csv')


이 코드를 추가하여 실행하면, 현재 디렉토리에 'kakaobank_stock_data.csv'라는 이름의 CSV 파일이 생성됩니다.

아래는 'kakaobank_stock_data.csv' 파일을 열었을 때의 내용입니다. 카카오뱅크의 주식 데이터가 CSV 파일에 어떻게 저장되었는지를 보여줍니다.

주식데이터CSV출력화면

이렇게 FinanceDataReader를 사용하면, 간단하게 주식 데이터를 수집하고 CSV 파일로 저장할 수 있습니다. 이 데이터를 사용하여 주식 가격의 추세를 분석하거나, 다른 데이터와 결합하여 더 복잡한 분석을 수행할 수 있습니다.

 

주식 데이터를 그래프로 표현하기: 카카오뱅크 주식 변동 시각화

주식 데이터를 분석하는 데 있어 시각화는 중요한 단계입니다. 그래프를 통해 주식의 변동 추세를 더 쉽게 이해할 수 있습니다. 이번에는 Python의 matplotlib 라이브러리를 사용하여 카카오뱅크의 주식 데이터를 그래프로 표현하는 방법을 알아보겠습니다.

먼저, 저장한 'kakaobank_stock_data.csv' 파일을 pandas의 read_csv 함수를 사용하여 읽어옵니다. 그리고 matplotlib의 plot 함수를 사용하여 종가 데이터를 그래프로 표현합니다.

import pandas as pd
import matplotlib.pyplot as plt

# CSV 파일에서 데이터 읽어오기
df = pd.read_csv('kakaobank_stock_data.csv')

df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

# 그래프 그리기
plt.figure(figsize=(10, 5))
plt.plot(df['Close'])
plt.title('Kakao Bank Stock Price')
plt.xlabel('Date')
plt.ylabel('Price (KRW)')
plt.show()


위 코드를 실행하면, 카카오뱅크의 종가 데이터가 그래프로 표현된 모습을 볼 수 있습니다. 이 그래프를 통해 주식 가격의 변동 추세를 한눈에 파악할 수 있습니다.

아래는 위 코드를 실행하여 얻은 그래프입니다.

주식변동그래프

 

환율 데이터 수집: 원/달러 환율 데이터 가져오기

FinanceDataReader는 주식 데이터 외에도 환율, 채권, 암호화폐 등 다양한 금융 데이터를 수집할 수 있는 기능을 제공합니다. 여기서는 원/달러 환율 데이터를 수집하는 방법을 소개하겠습니다.

먼저, FinanceDataReader의 DataReader 함수를 사용하여 원/달러 환율 데이터를 가져옵니다. 아래의 코드는 2023년 원/달러 환율 데이터를 가져옵니다.

import FinanceDataReader as fdr

# 원/달러 환율 데이터 가져오기
df = fdr.DataReader('USD/KRW', '2023-01-01', '2023-12-31')
print(df.head())


위 코드를 실행하면, 2023년 원/달러 환율 데이터가 출력됩니다.

환율데이터출력정보

다음으로, 이 데이터를 이용해 2023년 원/달러 환율의 변동을 그래프로 나타내 보겠습니다.

import FinanceDataReader as fdr
import matplotlib.pyplot as plt

# 원/달러 환율 데이터 가져오기
df = fdr.DataReader('USD/KRW', '2023-01-01', '2023-12-31')

# 그래프 그리기
df['Close'].plot()

plt.title('2023 USD/KRW Exchange Rate Trend')
plt.show()

이렇게 그래프를 통해 환율의 추세를 한눈에 파악할 수 있습니다.


이번 포스트를 통해 Python과 FinanceDataReader 라이브러리를 활용하여 주식과 환율 데이터를 수집하고 시각화하는 방법을 배웠습니다. 이를 통해 금융 시장의 동향을 분석하거나, 투자 전략을 수립하는 데 필요한 기본적인 도구를 습득하셨을 것입니다.

이 글이 데이터 분석에 관심이 있는 분들에게 도움이 되었기를 바랍니다.

반응형

댓글


loading