백만년만의...kaggle....진짜..현생...........에바ㄷㅏ.........사실 그렇게 바빠죽지는 않았다...........다만...........멘탈이........고멘네........... 인적성도 떨어지고 사실 요번에는 회사 지원을 거의 안했는데 삼성전자 서류가 안나와서 도저히 gsat은 손에 안잡히고......알고리즘도 진짜 하기싫고........싸피에서도 초심은 사라지고..........나태만 100%로 가득찬 사람이였다........... ( ˃̣̣̥᷄⌓˂̣̣̥᷅ ) ( ˃̣̣̥᷄⌓˂̣̣̥᷅ ) ( ˃̣̣̥᷄⌓˂̣̣̥᷅ )
100프로 바깥돌이...나는......대전에서..............심심해..........죽는다...............막걸리먹을...........친구..........젭알........
1.2 Target label
우리가 궁극적으로 알고자 하는 것은, 'Survived'. 즉 생존율 label을 알고싶어한다. 어떠한 형식으로, 그리고 지금 분포가 어떻게 되어있는지를 알려고 한다. 데이터에서 가장 중요한 것은 시각화!
f, ax = plt.subplots(1, 2, figsize=(18, 8)) #도화지를 준비하는 과정 f는 행 ax는 열이다.
#subplot(row,column) => 한개의 행의 2개로 나눠진 열을 준비한다 (그래서 가로로 2개의 그래프 출력)
df_train['Survived'].value_counts().plot.pie(explode=[0, 0.1], autopct='%1.1f%%', ax=ax[0], shadow=True)
ax[0].set_title('Pie plot - Survived')
ax[0].set_ylabel('')
sns.countplot('Survived', data=df_train, ax=ax[1])
ax[1].set_title('Count plot - Survived')
plt.show()
- value_counts : 지정해준 field의 value별 개수를 알려준다. 즉 , survived는 0과 1로 이루어진 데이터인데, 각각의 값이 얼마나 있는지를 알려준다.
- plot.pie : 파이 그래프를 생성하는데, 기본은 약간 찌그러진..? 느낌이라서 보는데 불편하다 expand를 통해서 확장시켜주고, autopct를 통해서 나오는 수치의 percent범위를 지정해준다.
- f는 행, ax는 열을 의미한다. 그래서 ax=ax[0]은 가로의 0번째 자리. 즉 첫번째 자리에 그림을 그리겠다는 의미!
- set_ylabel('') : y축의 이름을 없앤다는 설정!
- countplot은 각 value의 개수를 막대그래프로 보여준다
2. EDA ( Exploratory Data Analysis)
2.1 Pclass
Pclass를 기준으로 생존율이 어떻게 되는지를 분석을 해보자. Pclass를 기준으로한 생존율을 groupby하고, 그래프로 나타내보자.
🚢 각 class별 인원 받아오기
df_train[['Pclass','Survived']].groupby(['Pclass'],as_index=True).count()
- count를 통해서 그 value에 해당하는 sample이 몇개있는지를 알려준다.
- [[]] 와 같이 이중 list로(리스트로 데이터를 묶어서) field를 설정해줘야 한다!
- as_index는 묶어준 field를 index로 설정할지를 결정하며, True로 설정한다.
=> 위 처럼 설정해줘야, 나중에 데이터 처리가 편하다!
- sum을 사용할 경우, 각 data들의 합을 반환한다.
🎈 mean을 통해 생존율 구하기
pd.crosstab(df_train['Pclass'], df_train['Survived'], margins=True).style.background_gradient(cmap='summer')
- mean을 통해서 각 class별 생존율을 얻을 수 있다.
- style.background_gradient로 데이터의 범위에 따른 색갈을 설정해준다.
- cmap은 color map으로 google을 통해서 다양한 테마를 확인할 수 있다!
🛰 정렬 & 그래프로 나타내기
df_train[['Pclass','Survived']].groupby(['Pclass'], as_index=True).mean().sort_values(by='Survived',ascending=False).plot.bar()
- sort_values(by='기준', ascending=False)를 통해서 정렬을 한다. by뒤에 정렬 기준을 설정하고, ascending = False이면 내림차순 정렬이다.
💵class와 생존율 관계 비교하기🤕
y_position = 1.02
f, ax = plt.subplots(1,2, figsize=(18,8))
df_train['Pclass'].value_counts().plot.bar(color=['#CD7F32','#FFDF00','#D3D3D3'], ax=ax[0])
ax[0].set_title('Number of passengers by Pclass', y=y_position)
ax[0].set_ylabel('Count')
sns.countplot('Pclass', hue='Survived', data=df_train, ax=ax[1])
ax[1].set_title('Pclass:Survived vs Dead',y=y_position)
plt.show()
- 왼쪽 그래프에서는 class별 승객수를 나타내는 bar그래프이다.
- 오른쪽 그래프에서 각 class별 생존자와 사망자수를 비교하여서 나타낸다.
여기서, hue는 나눠주는 기준이 되는것 같다.. sns.countplot은 seaborn의 countplot으로 특정 label에 따른 항목의 개수 파악에 유리하다.
✔ 즉, class이 높아질 수록 생존율이 높아지고, class가 생존율에 큰 영향을 미치는 feature임을 파악할 수 있었다!
'데이터는 내손바닥 안에 있으면 좋겠다 > Kaggle: 타이나틱 프로젝트' 카테고리의 다른 글
05.EDA-Embarked (0) | 2021.05.15 |
---|---|
04-2 EDA Age, Sex, Pclass (0) | 2021.04.29 |
04. EDA - Age (0) | 2021.04.29 |
03. EDA - Sex (0) | 2021.04.19 |
01. DataSet 받아오기 (4) | 2021.03.17 |