1. 데이터 전처리

SAS에서 했던 작업을 그대로 Python에서도 진행해봅시다. 범주화를 제외한 나머지 작업을 거의 동일하게 진행해볼텐데요. 끝까지 잘 따라오세요.

1) 필요 패키지 불러오기

import pandas as pd
import numpy as np
from scipy.stats import norm
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

2) 불필요한 데이터 제거

아까 분석과 동일하게 사용하지 않는 데이터를 제거합니다.

train_df.drop(['Street','Alley','Utilities','Condition2','RoofMatl','BsmtFinType2',
'BsmtFinSF2','Heating','LowQualFinSF','WoodDeckSF','OpenPorchSF',
'PoolArea','PoolQC','MiscFeature','MiscVal','MoSold','YrSold'], axis = 'columns', inplace=True)

test_df.drop(['Street','Alley','Utilities','Condition2','RoofMatl','BsmtFinType2',
'BsmtFinSF2','Heating','LowQualFinSF','WoodDeckSF','OpenPorchSF',
'PoolArea','PoolQC','MiscFeature','MiscVal','MoSold','YrSold'], axis = 'columns', inplace=True)

3) 타겟변수 확인

왼쪽 그림을 보면 타겟변수가 한쪽으로 치우쳐져 있는 것을 동일한데요. 로그함수를 취했을때 정규분포처럼 보이는 것을 확인 할 수 있습니다. 타겟변수에 로그함수 취하는것은 모델 구축전에 수행하도록 하겠습니다.

#Target 변수 확인
figure, (ax1, ax2) = plt.subplots(nrows=1, ncols=2)
figure.set_size_inches(15,5)
sns.distplot(train_df['SalePrice'], fit=norm, ax=ax1)
sns.distplot(np.log(train_df['SalePrice']), fit=norm, ax=ax2)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/64726fee-4338-4a11-8c4c-4e5ff7ff0566/Untitled.png

4) 파생변수 만들기

4-1 외부 컨디션

다음과 같이 외부 컨디션에 대한 변수 중 범주형으로 되어있는 변수를 가공합니다. 4가지 변수를 더하여 New_var1를 생성합니다.

Condition_var = ['OverallQual','OverallCond','ExterQual','ExterCond']
Condition_Ex = train_df[Condition_var]

Condition_Ex = Condition_Ex.replace(to_replace='Ex',value = 5)
Condition_Ex = Condition_Ex.replace(to_replace='Gd',value = 4)
Condition_Ex = Condition_Ex.replace(to_replace='TA',value = 3)
Condition_Ex = Condition_Ex.replace(to_replace='Fa',value = 2)
Condition_Ex = Condition_Ex.replace(to_replace='Po',value = 1)
Condition_Ex = Condition_Ex.replace(to_replace='None',value = 0)
Condition_Ex = Condition_Ex.replace(to_replace='',value = 0)
Condition_Ex = Condition_Ex.replace(to_replace='NA',value = 0)
train_df['New_var1'] = Condition_Ex['OverallQual'] + Condition_Ex['OverallCond'] + Condition_Ex['ExterQual'] + Condition_Ex['ExterCond']

테스트 데이터도 동일하게 작업해 줍니다.