본문 바로가기
독서

전처리 연습

by _><- 2022. 6. 18.
반응형

1. 불필요한 컬럼 제거
1-1. 따로 저장했다가 나중에 붙이기

x_test_passenser_id = x_test['PassengerId']
 
x_test = x_test.drop(columns = ['PassengerId'])
 
final = pd.concat([x_test_passenser_id, y_test_predicted], axis=1)
 
 
 
 
 
 
2. 결측치 처리하기
 
x_train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 8 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   티켓등급      891 non-null    int64  
 1   성별        891 non-null    object 
 2   나이        714 non-null    float64
 3   형제자매배우자수  891 non-null    int64  
 4   부모자식수     891 non-null    int64  
 5   운임요금      891 non-null    float64
 6   객실번호      204 non-null    object 
 7   선착장       889 non-null    object 
dtypes: float64(2), int64(3), object(3)
memory usage: 55.8+ KB


결측치가 존재하는 컬럼 확인
isnull().sum() 함수로 결측치 수를 확인

print(x_train['나이'].isnull().sum())
 
 
 
2-1. 종속변수와 상관성을 확인하여 상관관계가 낮은 경우 컬럼 제거
 
 
print(x_train['나이'].isnull().sum())
 
                나이  Survived
나이        1.000000 -0.077221
Survived -0.077221  1.000000

상관관계는 절대값이 1에 가까울수록 상관성이 큼

2-2. 중복을 제외한 값의 개수가 너무 다양한 경우 컬럼 제거

print(x_train['객실번호'].unique().size)
x_train = x_train.drop(columns=['나이''객실번호'])
 
 
 
 
2-3. 가장 많은 비율을 차지하는 값으로 결측치 대체
 
 
print(x_train.groupby(['선착장'])['선착장'].count())
선착장
C    168
Q     77
S    644
Name: 선착장, dtype: int64
x_train['선착장'] = x_train['선착장'].fillna('S')



3. 범주형 변수 인코딩하기
3-1. 범주가 2개정도 되는 경우 replace() 함수를 활용하여 연속형 변수로 변경

x_train['성별'] = x_train['성별'].replace('male',0).replace('female',1


3-2. 원핫인코딩
get_dummies()함수와 rename() 함수 사용

선착장_dummy = pd.get_dummies(x_train['선착장'], drop_first = True).rename(columns={'Q':'선착장Q''S':'선착장S'})
     선착장Q  선착장S
0       0     1
1       0     0
2       0     1
3       0     1
4       0     1
..    ...   ...
886     0     1
887     0     1
888     0     1
889     0     0
890     1     0

[891 rows x 2 columns]

원핫 인코딩된 컬럼을 붙이고, 기존의 범주형 변수 삭제

x_train = pd.concat([x_train, 선착장_dummy], axis = 1)
x_train = x_train.drop(columns = ['선착장'])
     티켓등급  성별  형제자매배우자수  부모자식수     운임요금  선착장Q  선착장S
0       3   0         1      0   7.2500     0     1
1       1   1         1      0  71.2833     0     0
2       3   1         0      0   7.9250     0     1
3       1   1         1      0  53.1000     0     1
4       3   0         0      0   8.0500     0     1
..    ...  ..       ...    ...      ...   ...   ...
886     2   0         0      0  13.0000     0     1
887     1   1         0      0  30.0000     0     1
888     3   1         1      2  23.4500     0     1
889     1   0         0      0  30.0000     0     0
890     3   0         0      0   7.7500     1     0

[891 rows x 7 columns]



4. 파생변수 만들기

x_train['가족수'] = x_train['형제자매배우자수'] + x_train['부모자식수']
x_train = x_train.drop(columns = ['형제자매배우자수','부모자식수'])
    티켓등급  성별     운임요금  선착장Q  선착장S  가족수
0       3   0   7.2500     0     1    1
1       1   1  71.2833     0     0    1
2       3   1   7.9250     0     1    0
3       1   1  53.1000     0     1    1
4       3   0   8.0500     0     1    0
..    ...  ..      ...   ...   ...  ...
886     2   0  13.0000     0     1    0
887     1   1  30.0000     0     1    0
888     3   1  23.4500     0     1    3
889     1   0  30.0000     0     0    0
890     3   0   7.7500     1     0    0

[891 rows x 6 columns]
반응형

'독서' 카테고리의 다른 글

예측모델 연습하기  (0) 2022.06.18
분류모델 만들고 평가하기 연습  (0) 2022.06.18
힘들고 배고픔의 가치  (0) 2022.06.16
데이터분석 연습  (0) 2022.06.06
유니크한 값 구하기  (0) 2022.06.06