개요
– KRX 정보데이터시스템 : 코스피 종목 데이터 수집 (Feat. 파이썬)
– 저번 글에서는 직접 KRX 정보데이터시스템(http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd)에 접속해 필요한 정보들을 다운로드 받았다. 이번에는 파이썬을 활용해 데이터를 수집하는 방법을 알아보자
– 이번 글에서는 KRX에서 삼성전자의 1년치 종가, 거래대금 데이터를 수집해서 로컬 파일에 저장 및 시각화 하는 방법을 알아본다.
사용자 환경
– 나의 파이썬, 라이브러리 버전은 다음과 같다.
1. 파이썬 : Python 3.8.10
2. pykrx : 1.0.48
3. pandas : 2.0.3
4. matplotlib : 3.5.3
코드
from pykrx import stock
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 수집
def get_stock_data(stock_code, start_date, end_date):
# pykrx를 사용해 날짜 범위 내의 종가와 거래대금 데이터를 가져옴
df1 = stock.get_market_ohlcv_by_date(start_date, end_date, stock_code) # 시가, 고가, 저가, 종가, 거래량, 등략률, 날짜는 인덱스
df2 = stock.get_market_cap(start_date, end_date, stock_code) # 시가총액, 거래량, 거래대금, 상장주식수, 날짜는 인덱스
df1 = df1.reset_index()[["날짜", "종가"]] # 필요한 컬럼만 가져오기 : 날짜, 종가
df2 = df2.reset_index()[["날짜", "거래대금"]] # 필요한 컬럼만 가져오기 : 날짜, 거래대금
result_df = pd.merge(df1, df2, on='날짜', how='inner')
return result_df
# 삼성전자 데이터 가져오기
stock_code = "005930" # 삼성전자 종목 코드
start_date = "20200101" # 시작 날짜 (YYYYMMDD 형식)
end_date = "20241231" # 종료 날짜 (YYYYMMDD 형식)
data = get_stock_data(stock_code, start_date, end_date)
data.head()
# 시각화
def plot_data(df):
# 한글 폰트 설정
plt.rcParams['font.family'] = 'Malgun Gothic' # Windows의 맑은 고딕
plt.rcParams['axes.unicode_minus'] = False # 마이너스 기호 깨짐 방지
fig, ax1 = plt.subplots(figsize=(12, 6))
# 종가(y1)
ax1.set_xlabel('날짜')
ax1.set_ylabel('종가', color='blue')
line1 = ax1.plot(df["날짜"], df['종가'], label='종가', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
# 거래대금(y2)
ax2 = ax1.twinx() # 두 번째 y축 생성
ax2.set_ylabel('거래대금', color='red')
line2 = ax2.plot(df["날짜"], df['거래대금'], label='Trading Volume', color='red')
ax2.tick_params(axis='y', labelcolor='red')
# 제목 및 범례 추가
lines = line1 + line2
labels = [line.get_label() for line in lines]
ax1.legend(lines, labels, loc="upper left")
plt.title(f'종가 & 거래대금 : {stock_code}')
fig.tight_layout() # 레이아웃 조정
plt.show()
plot_data(data) # 데이터 시각화 실행
# 데이터 저장
DIR_SAVEFILE = "C:/Users/LG/Desktop/" # 데이터 저장할 디렉토리
name_savefile = "stock_data.xlsx" # 저장할 파일 이름
data.to_excel(DIR_SAVEFILE + name_savefile, index=True, index_label="No")
– 코드는 pykrx 공식문서, chatgpt의 도움을 받아 작성했다.
결과물

추가 설명
1. 아래의 변수들은 사용자에 따라 수정할 변수들이다.
– stock_code = “005930” # 삼성전자 종목 코드
– start_date = “20200101” # 시작 날짜 (YYYYMMDD 형식)
– end_date = “20241231” # 종료 날짜 (YYYYMMDD 형식)
– DIR_SAVEFILE = “C:/Users/LG/Desktop/” # 데이터 저장할 디렉토리
– name_savefile = “stock_data.xlsx” # 저장할 파일 이름
참고 자료
1. KRX 정보데이터시스템
2. pykrx 깃허브