본문 바로가기

Kaggle

Kaggle - train, test를 한꺼번에 전처리하기

반응형
pd.concat을 이용해서 train과 test를 붙인 뒤

전처리를 완료하고

다시 인덱스를 이용해서 분리한다.

전처리할 때, test의 정보를 이용해서 train 넣으면 안된다.
(평균으로 결측값 넣기 등)

 

 

데이터 출처

https://www.kaggle.com/c/bike-sharing-demand/data

 

 

위 Kaggle의 데이터를 이용한다.

 

 

 

 

데이터 불러오기

 

 

 

train

 

train의 레코드 개수는 총 10,886개이며

 

 

 

 

인덱스는 0부터 10885까지로 되어있다.

 

 

 

 

 

 

test

 

 

 

test 데이터셋 또한 레코드는 총 6,493개이며

 

인덱스는 0부터 6492까지로 구성 되어있다.

 

 

 

 

 

 

 

 

pd.concat

 

 

 

axis=0으로 concat을 하면 행이 연결된다.

 

총 17,379개로 만들어지며 합치더라도 인덱스는 그대로 유지된다.

 

 

 

 

 

 

 

train만 다시 가져오려면?

 

 

iloc를 이용한다.

 

train의 shape[0]은 10886이므로 10886을 포함하지 않는 10885까지 걸러내면

 

그게 바로 train만 얻는 것이다.

 

 

 

 

 

 

 

test만 다시 가져오려면?

 

 

 

train.shape[0]은 10886이므로 그 인덱스부터는 test의 인덱스이므로

 

iloc를 이용해 걸러내면 test를 다시 찾아낼 수 있다.

 

* train에만 있던 casual, registered, count컬럼이 생성되고 모두 누락값으로 구성되었다.

 

 

 

 

 

 

 

 

 

실전 - weather 컬럼 원핫인코딩

 

 

weather 컬럼의 고유값은 1, 2, 3, 4이다.

 

 

 

이를 get_dummies를 이용해서 각각의 컬럼으로 만들어주자.

 

 

 

 

concated와 다시 pd.concat

 

 

잘 추가되었다.

 

 

 

 

 

 

train / test로 재분리

 

 

 

 

 

검토

 

train

 

test

 

test에 causal, registered, count 컬럼이 추가된 것 말곤 이상없이 잘 분리되었다.

 

 

 

반응형