본문 바로가기
퀀트 전략 기초

월스트리트 퀀트 투자의 법칙. 데이터 클리닝

by TenMillionQuant 2022. 3. 21.

퀀트 분석을 위해 필요한 데이터를 다운로드 했다면, 데이터를 클리닝 해야 한다. 

 

프로페셔녈 퀀트는 규칙을 만들어 정확히 하지만, 개인투자자도 쉽게 해낼 수 있다. 

 

1.도표 그리기

import pybithumb

# pybithumb에서 데이터를 비트코인 시세 데이터를 가져온다
df = pybithumb.get_ohlcv("BTC")

# 백번째 값을 임의로 1000을 곱해보았다
temp = df.iloc[100]['close']
temp = temp * 1000
df.iloc[100]['close'] = temp 

# 그리고 도표를 그려본다
import matplotlib.pyplot as plt

# 그려보면 갑자기 이상한 값이 나오는 것을 확인할 수 있다
plt.plot(df['close'])

 

2. 평균값 중간값, 최고값, 최저값 차이 구하기

도표외에도 쉽게 할 수 있는 방법이 있다. 평균값, 중간값, 최고값, 최저값 차이 등을 구해보는 것이다. 크게 이상한 숫자가 있을 경우 평균 값에서도 말이 안되는 숫자가 보인다. 

# 평균값을 계산해보자
import statistics

means = statistics.mean(df['close'])
print('평균값 : ', means)
print("최고값 - 최소값 : ", max(df['close']) - min(df['close']))
평균값 :  14618773.225917038
최고값 - 최소값 :  4769791000.0

그러면 평균값은 1400백만, 최고값 - 최소값은 47억(?)이 나온다. 아무래도, 최고값 - 최소값이 너무 이상하다. 정상적인 데이터로 평균값과 최고값 - 최소값을 구해보자.

# 정상 데이터를 다시 불러오자
normal_df = pybithumb.get_ohlcv("BTC")

normal_means = statistics.mean(normal_df['close'])
print('정상 평균값 : ', normal_means)
print("정상_최고값 - 정상_최소값 : ", max(normal_df['close']) - min(normal_df['close']))
정상 평균값 :  12983672.780253686
정상_최고값 - 정상_최소값 :  81597000.0

정상데이터로 평균값을 구했을떄는 1200만, 최고값 - 최소값은 8100만으로 나온다. 

 

데이터 클리닝의 목적은 오류를 발견하고 이를 고치는 데 있으나, 그 과정에서 하나만 더 해결하면 좋다. 

 

데이터의 포맷을 앞으로 더 쓰기 편리하게 고쳐놓는 일이다. 숫자는 숫자로, 문자는 문자로 정확히 정의한다. 

 

예를 들어, 아까 본 dataframe의 open 데이터가 int32라고 하자

# 예를 들어, 아까 본 dataframe의 open 데이터가 int32라고 하자
normal_df.dtypes
open        int32
high      float64
low       float64
close     float64
volume    float64
dtype: object

 

모든 데이터의 데이터 타입이  float64인데 open만 int32이므로 동일하지 않다. 그러므로, int값에서 float값으로 바꿔주자.

 

# 컬럼의 타입을 바꾸려면 astype({'column' : 'type'})로 표시해 바꾼다

normal_df = normal_df.astype({'open':'float'})
normal_df.dtypes
open      float64
high      float64
low       float64
close     float64
volume    float64
dtype: object

 

그러면 이제 모든 column의 data type이 float으로 바뀐걸 확인할 수 있다. 

댓글