본문 바로가기

주식투자/투자도움받기

파이썬(python) 주식 자동매매 프로그램 만들기 - 2-2 데이터프레임(df)

반응형

안녕하세요 직장인 주식투자자 [찌쏘]입니다. 최근 주식투자를 자동화 하기 위해서 파이썬을 기반으로 주식 자동매매 프로그램을 만들고 있습니다. 대부분은 소스코드를 복붙(복사하여 붙여넣기, Copy&Paste)로 만들려고 계획하고 있습니다.

하지만 원하는 로직이 자동매매프로그램과 동일하지 않기 때문에 일정부분 수정을 해야하는 상황이 불가피하게 발생을 하게되는데, 복잡한 것을 알아야한다기보다 기초적인 부분만 알면 충분히 수정이 가능합니다.

이번 포스팅에서는 파이썬의 기초로 지난번 if조건문에 이이서 두번째로 많이 사용한 데이터프레임(Data-frame)에 대해서 알아보도록 하겠습니다. 쉽게 이야기하면 엑셀과 같은 데이터 저장변수입니다.

가로세로 열/행 기반의 데이터를 저장하는 구조를 가진 변수이고, 보통 특정조건에 맞는 종목, 시가, 고가, 저가, 종가 등의 저장하기 위한 작업을 하면서 프로그램상에 핵심 변수라고 봐도 무방할 것 같습니다.

파이썬으로 주식 자동매매 프로그램 만들기 - 데이터프레임 이해하기
파이썬으로 주식 자동매매 프로그램 만들기 - 데이터프레임 이해하기

파이썬(python) 주식 자동매매 프로그램 만들기 - 2-2 데이터프레임(df)

제가 만들어놓은 주식 자동매매 프로그램에서 사용한 조건 등을 토대로 기본 예제를 만들어보았으니 활용해보신다면 충분히 IT개발에 경험이 없으시더라도 활용하실 수 있을 것이라고 생각합니다.

앞서 간략히 말씀드렸지만 데이터프레임(DF, Data-Frame)은 엑셀과 같은 표형태의 데이터 저장소를 의미합니다. 간단하게 이해를 돕기위해 아래와 같은 표형태로 데이터가 저장된다라고 보시면 됩니다.

index 종목코드 종목명 시가 고가 저가 종가
1 A054900 홍길동 2590 2700 2500 2540
2 A027800 김말똥 10200 10800 10000 10400

주식정보를 받아와서 A라는 데이터프레임에 위와 같은 정보형태로 넣어둘수가 있는 것입니다. 데이터프레임 사용법을 이것저것 서칭을 해서 자주사용하는 유형의 방법만 뽑아보았으니 참고하시기 바랍니다.

 

상장법인의 목록 받아오기

import pandas as pd

df=pd.read_html('https://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13')[0]

print(df)

위 코드는 상장법인의 목록을 받아와서 df라는 데이터프레임변수에 값들을 넣고, df에 어떻게 들어가있는지 출력을 해보는 함수입니다. 실행을 해보면 아래와 같이 출력되는 것을 볼 수 있을 것입니다. 

python test.py 실행된 모습
python test.py 실행된 모습

그런데 저렇게 실행을 했을때 모든 정보가 필요한 것이 아니기 때문에 필요한 정보만 뽑아오는 작업도 해보도록 하겠습니다. 

필요한 정보만 받아오고자 한다면, 데이터프레임에 컬럼명을 입력하여 출력하면됩니다. 아래의 예제를 한번 돌려본다면 충분히 이해가 가능할 것입니다.

추가적으로 한국거래소사이트에서 종목코드를 모두 받아오면 앞에사 '0'으로 시작한다면 나타나지 않는것인데요. 종목코드를 표시하기 위해서 약간의 변경을 해주는 작업도 추가해보았습니다.

import pandas as pd

#df = pd.read_html('D:\StockAuto\상장법인목록.xls', header=0)[0]

df=pd.read_html('https://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13')[0]
df['종목코드'] = df['종목코드'].map('A{:06d}'.format)

print(df['종목코드'])

위 코드를 실행시켜보면 우리가 원하는 A000580 과 같은 형식의 주식종목코드를 받아올 수가 있습니다. 크레온에서 사용을 하려면 A가 붙어있는 6자리 숫자코드가 필요하기 때문에 위와 같이 변환해주었습니다.

데이터프레임에서 종목코드만 출력해보기 + 종목코드의 변환까지
데이터프레임에서 종목코드만 출력해보기 + 종목코드의 변환까지

 

거래대금 상위종목 찾기 (pykrx 함수 활용)

from pykrx import stock
import pandas as pd
from datetime import datetime,timedelta

df1 = stock.get_market_ohlcv_by_ticker(datetime.now() - timedelta(days=2), market="KOSPI")
print(df1.sort_values(by='거래대금',ascending=False).head(50))

df2 = stock.get_market_ohlcv_by_ticker(datetime.now() - timedelta(days=2), market="KOSDAQ")
print(df2.sort_values(by='거래대금',ascending=False).head(50))

result = pd.concat([df1,df2])

# # 거래대금 상위 100개종목 구하기
result = result.sort_values(by='거래대금',ascending=False).head(100)

print(result)

 

위는 거래대금 상위종목을 구하는 함수입니다. pykrx라는 플러그인에서 정말 많은 정보를 편리하게 볼 수 있게 제공을 해주고는 있는데요. 조회를 너무 많이는 할 수 없고, 장초반부터 활용이 쉽지는 않기는 하지만 정보를 얻기에 아주 필수적인 함수입니다. 

주식정보 스크래핑해오기 파이썬 PYKRX 함수
주식정보 스크래핑해오기 파이썬 PYKRX 함수

github.com/sharebook-kr/pykrx

 

sharebook-kr/pykrx

KRX 주식 정보 스크래핑. Contribute to sharebook-kr/pykrx development by creating an account on GitHub.

github.com

어떤 분이 주식정보를 스크래핑할 수 있도록 만들어놓은 깃허브의 자료입니다. 위 사이트에 들어가면 사용법이 나와있으니 참고를 하시면됩니다. 

 

※ 저는 주식투자를 공부중인 개인/개미투자자입니다. 제 주관에 의한 개인적인 투자방식을 정립 중이며, 투자 손실과 책임은 개인에게 있음을 안내드립니다.

유익하셨다면, 공감(♡)클릭 및 댓글 부탁드리며, 블로그/유튜브가 많은 분들에게 도움이 되었으면 좋겠네요.

찌쏘와 함께 주식공부 합시다.

 

반응형


Visitor : 2,043,971
POWERED/DESIGN/COPYRIGHTⓒ BY JJISSO