반응형
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 |