### 1.타이타닉 데이터 불러오기 및 데이터 조작
- 1.1 데이터 불러오기
import pandas as pd
import seaborn as sns
df=sns.load_dataset('titanic') #sns에서 타이타닉 데이터 불러오기, 전처리 완료후에 저장 하겠습니다.
df.info()
age, embarked, deck, embark_town 에서 null이 존재하는것 처럼 보임. 그럼 이것을 확인해볼까?
df.isnull().sum()
### 2.데이터 클리닝
- 결측치
age 177, embarked 2, deck 688, embarked_town 2 개의 null값이 존재하는것을 확인하였다.
df.describe(include='all')
##### (방법1) 결측치 삭제
df_cleand1=df.dropna(subset=['age','embarked'])
df_cleand1.info()
##### (방법2) 머신러닝을 활용한 결측치 채우기
891행이 712행으로 줄어든것을 확인할 수 있다. 하지만 이러게 모든 데이터를 삭제 하는것이 과연 무조건 옳은걸까?
이번에는 머신러닝을 기반으로한 결측지를 추정해서 채워 넣는 방법을 시도해보자
from sklearn.impute import SimpleImputer
imputer=SimpleImputer(strategy='mean') # mean 또는 most_frequent
df['age']=imputer.fit_transform(df[['age']])
df.info()
- 이상치 탐지 및 처리
from sklearn.ensemble import IsolationForest
iso_forest=IsolationForest(contamination=0.05)
df['outlier']=iso_forest.fit_predict(df[['age','fare']])
df
df[df['outlier']==-1].info()
df_cleand2=df[df['outlier']!=-1]
이상치로 판별된 행 삭제
df_cleand2.info()
평균으로 대체 할수도 있다.
df.loc[df['outlier']==-1,'fare']=df['fare'].mean()
### 3.데이터 변환
df['pclass']=df['pclass'].astype('category')
변환 전
변환 후
범주형 데이터 인코딩(one-hot encoding)
df_encoded=pd.get_dummies(df,columns=['sex','embarked'],drop_first=True)
df_encoded
스케일링(StandardScaler) 사용
from sklearn.preprocessing import StandardScaler
scaler=StandardScaler()
df['fare_scaled']=scaler.fit_transform(df[['fare']])
df
'Python' 카테고리의 다른 글
240905 파이선 코드카타 (다시 시작) (0) | 2024.09.05 |
---|---|
[데이터 전처리&시각화] 1주차 과제 (0) | 2024.07.17 |
변수를 선언했으면 저장(대입) 해야 한다. (0) | 2024.06.19 |
SQL 4주차 (완료) (0) | 2024.05.28 |
파이썬 문법 기초 1주차 Quiz (0) | 2024.05.22 |