본문 바로가기

데이터는 내손바닥 안에 있으면 좋겠다/Kaggle: 타이나틱 프로젝트

08. EDA - Fare

흠냐리^^^,,, 백만년만의 타이나틱,, 사실 코딩도 해본지 거의 한 달이 넘은듯,,!!! ^ㅠ^,,,이노 면접보고 아주 뒤숭숭해서 손에 잡히지가 않는다.. 빨리 결과 나왔으면 좋겠다. 이번주 + 다음주안에 타이타닉을 끝내고, 마지막 자기주도 PJT 데이에, 반도체 데이터 분석에 참가해보는 게 목표긴한데 흠냐뤼,,, 열정이 다 사라졌다,,, 내 열정 찾아조,,

 

본격적으로 EDA의 마지막이다! Fare, Cabin, Ticket의 영향을 파악해보는 것으로 각 항목별 생존율에 미치는 영향은 파악 끝!

1. Fare

0.1~ 부터 continous한 데이터이다. 

fig, ax =plt.subplots(1,1,figsize=(8,8))
g = sns.distplot(df_train['Fare'], color='b', label='Skewness:{:.2f}'.format(df_train['Fare'].skew()),ax=ax)
g = g.legend(loc='best')

distplot을 사용했는데 series를 히스토그램으로 나타내주는 plot이다. 

여기서 skewness라는 것은, distribution의 비대칭 정도를 나타내준다. 0이면 정규분포 모양(대칭), 0보다 크면, 왼쪽으로 치우친 분포, 작을 경우에는 우측으로 치우친 데이터를 나타낸다.

Fare의 Skewness는 4,79로 좌측으로 치우친 분포를 나타낸 다는 것을 알 수 있다. 이러면, 데이터 처리에 안좋은 영향? 을 미치기 때문에, 데이터를 처리해주는 과정이 필요하다.

lambda함수를 사용하여 모든 데이터에 log를 걸어주는 과정이 필요하다.

여기서 np는 numpy library를 의미!

df_train['Fare'] = df_train['Fare'].map(lambda i : np.log(i) if i >0 else 0)

데이터를 처리해주고, 다시 똑같이 plot을 해보자.

#데이터 처리해주고 다시 그려보기
fig, ax =plt.subplots(1,1,figsize=(8,8))
g = sns.distplot(df_train['Fare'], color='b', label='Skewness:{:.2f}'.format(df_train['Fare'].skew()),ax=ax)
g = g.legend(loc='best')

짜잔~ 더 정규분포에 가까워진 것을 확인할 수 있다. 

 

2. Cabin

cabin의 경우 거의 80%가 NaN 데이터기 때문에, 포함시키지 않는다.

3. Ticket

ticket의 값별로 value_count()를 해보면, 특정 규칙을 발견할 수 있다. 그리고 str 데이터기 때문에, 추후에 처리를 통해서 정확성을 높일 수 있다.