IT지식/빅데이터

토이프로젝트 - (3) 결측치 확인 및 처리

매 석 2023. 5. 20. 15:03
반응형

- 과거

 

토이프로젝트 - (2) 데이터 수집 (with pandas)

- 배경 토이프로젝트 - (1) 데이터 수집 (코스피 크롤링) 기본 배경 중간고사 기간은 끝났지만 아직 다음주에 시험이 1개 남아있다. 그래도 최근에 하루 1시간 정도 ... blog.naver.com 과거 라이브러리

maeseok.tistory.com

이전 내용은 위의 링크를 참고하면 된다.

 

- 데이터 값 비교

NASDAQ

S&P500

같은 4671개의 row를 가지지만, date를 확인해보면

마지막 날짜가 다른 것을 확인할 수 있다.

이를 찾기 위해 범위를 줄여가며 값을 찾아본 결과

그 예시로 20090907를 찾을 수 있었다.

이 날 나스닥의 값은 없는데, S&P500의 값은 있었다.

다른 사이트에서는 이 날 둘의 데이터 모두 없었다.

인터넷에서 이유를 찾아본 결과 마땅한 이유가 나오지 않았다.

추가로 이 날 외에도 다른 날들의 데이터도 문제가 있기에

최종적으로 5일의 데이터가 차이가 생기는 듯 하다.

아마 데이터 오입력 등의 문제라고 생각한다.

이를 결측치 처리할 때 해결하려고 한다.

 

- 결측치 처리

이렇게 pandas의 to.csv를 이용하여, csv 파일을 각각 만들었다.

import pandas as pd
SP=pd.read_csv("SP500.csv")
KS=pd.read_csv("KOSPI.csv")
DW=pd.read_csv("DOW.csv")
NS=pd.read_csv("NASDAQ.csv")
df= pd.DataFrame({'Date':KS['date'],'SP':SP['close'],'KOSPI':KS['close'],
                  'DW':DW['close'],'NS':NS['close']})
#inplace를 통해 기존의 인덱스(숫자)를 대체
df.set_index('Date',inplace=True)

이렇게 4개의 csv를 가져와 하나의 dataframe으로 합쳤다.

인덱스는 날짜를 기준으로 설정했다.

df.isnull().sum()을 통해 확인한 결과

미국 증시 데이터가 각각 529개씩 부족하다.

이는 거의 대부분이 KOSPI 데이터가 5개월 정도의 데이터가 더 있기 때문이다.

나머지는 미국과 한국의 공휴일 차이 등으로 해석된다.

보통은 fillna를 통해서 NAN 값을 앞이나 뒤의 값으로 대체를 한다.

하지만 나는 dropna를 통해서 NAN 값을 제거하고 분석하려고 한다.

그 이유는 미국과 한국의 공휴일이 달라 한 곳의 데이터가 없을 때

그 값을 앞이나 뒤의 값으로 대체하게 되면, 둘의 관계를 분석하자는

목표에 방해가 된다고 생각했기 때문이다.

또한 5개월 추가 데이터를 제외하고는 거의 미미한 데이터만이 NAN 값을 가지기에

drop을 사용하였다.

 

이를 통해 각각의 close 데이터들을 하나의 dataframe으로 만들었다.

이를 활용하여 시각화 등의 단계로 나아갈 수 있다.