타이타닉 생존자 예측 프로젝트 해보기 1. 전처리 및 sns 뽑아보기.

2023. 7. 4. 18:25python

반응형

인프런의 권철민 강사님 동영상을 참고 중이다.

 

%matplotlib inline

이것을 쓰면 matplotlib을 쥬피터로 실행할 때 실행한 브라우저에서 바로 볼 수 있게 하는 소스이다.

 

그 다음 각 데이터의 타입과 Non-Null Count를 확인해보기 위해 Info()를 쓴다. Age와 Cabin, Embarked에 Null값이 있는 것으로 보인다.

titanic_df.isnull().sum()
def drop_features(df):
    df.drop(['PassengerId', 'Name','Ticket'], axis=1, inplace=True)
    return df

drop_features(titanic_df)

titanic_df

axis=0을 하고 돌려보면 오류는 일단 뜬다. 그런데 내가 무슨 작업을 해서 그런지, axis=1을 해도 제대로 되지 않았음. 그래서 다시 불러와서 drop을 했다. 사망률 구하는데 승객ID, 이름, 티켓 이름는 상관없을 것으로 판단하기 때문에 미리 지운다.

 

describe() 하면 카운트, 평균, 표준화(std), 사분위수 등이 보인다.

 

그리고 transpose를 하게 되면 전치가 되어 행과 열이 바뀐다.

 

titanic_df['Age'].fillna(titanic_df['Age'].mean(), inplace=True)

titanic_df.isnull().sum()

다음은 아까 Age, Cabin, Embarked가 Null이었으니 fillna 작업을 한다. 우선 성별은 Null 값이 들어가있지 않은 것은 평균으로 채웠다.

근데 평균으로 채우면 아마 소수점으로 계산될텐데 괜찮은가..? 아무튼 평균으로 채웠다.

그다음 isnull().sum()을 해보니 이렇게 바뀌었다. 마저 Cabin(선실 번호)과 Embarked(정박 항구)도 채워넣자.

 

다음은 선실번호 구분을 해야 하는데, .str을 사용하면 문자열을 다룰 수 있다. str.split 등 예전에 했던 생각이 난다.

sns.barplot(x='Cabin', y = 'Survived', data = titanic_df)

그 다음 이렇게 seaborn을 통해서 바 플롯을 뽑아봤다. N은 Null값인데 아무튼 사람이 많이 죽었고, G,A도 0.6이 넘지 않는 생존률이 나왔다.

 

sns.barplot(x='Sex', y = 'Survived', data = titanic_df)

성별 순으로 하니 male에 비해 female의 생존 비율이 높다.

groupby를 까먹었다. 우선 성별을 기준으로 Survived를 가져온다. 그다음 Count()로 알아보면 female과 male의 카운트가 나오는데 1의 비율, 그러니까 생존 비율이 female이 많다. 일단 숫자부터 많다.

 

그 다음 Pclass이다. 이것을 하면 1등석의 생존율이 확실히 높다. 좋은 좌석을 탈 수록 생존율이 높은 것이다.

sns.barplot(x='Pclass', y='Survived', hue='Sex', data=titanic_df)

hue를 사용하면 색상이 각각 구별이 되어서 보인다.

 

 

 

apply(lambda 를 사용하여 연령대를 카테고리 별로 뽑아봤는데 영상에서와는 다르게 나와서 좀 당황스럽다;; 뭐지?

728x90