본문 바로가기

STUDY

파이썬 스터디 3주차(캐글)

https://youtu.be/aeaEISnjH2I

캐글 타이타닉 5. EDA - Age, Sex, Pclass(violinplot)

f, ax = plt.subplots(1, 2, figsize=(18,8))
#사이즈가 18, 8인 도화지(f)를 만들고 ax를 1x2로 나눔(subplots)

sns.violinplot('Pclass', 'Age', hue='Survived', data=df_train, scale='count', split=True, ax=ax[0])
ax[0].set_title('Pcalss and Age vs Survived')
ax[0].set_yticks(range(0, 100, 10))
#df_train 데이터의 Pclass를 x축, Age를 y축에 두고 Survived에 따라 구분해 ax[0]에 바이올린 플랏
#y축의 범위는 0부터 100까지 10의 단위를 둠

sns.violinplot('Sex', 'Age', hue='Survived', data=df_train, scale='count', split=True, ax=ax[1])
ax[1].set_title('Sex and Age vs Survived')
ax[1].set_yticks(range(0, 100, 10))
#df_train 데이터의 Sex를 x축, Age를 y축에 두고 Survived에 따라 구분해 ax[1]에 바이올린 플랏

plt.show() #전체 그림(도화지)을 보여줌

 

- 저기서 scale을 area로 하면 바이올린 면적이 넓어지는 것처럼 보임(이는 정확한 데이터를 보여주기 힘듦)

- split을 False로 두면 왼쪽처럼 hue 값에 따라 분리된 바이올린 플랏이 그려짐

- 여성과 Pclass가 1이거나 2인 사람들의 생존 정도가 그렇지 않은 사람들보다 높음을 한눈에 볼 수 있음

 

 

https://youtu.be/zRH_ON9kZb0

캐글 타이타닉 6. EDA - Embarked

f, ax = plt.subplots(1, 1, figsize=(7, 7)) #도화지 만들기

df_train[['Embarked', 'Survived']].groupby(['Embarked'], as_index=True).mean().sort_values(by='Survived', ascending=False).plot.bar(ax=ax)
#df_train의 Embarked와 Survived 칼럼만 가져와 Embarked에 따라 나눈 평균을 구함. survived 값에 따라 정렬하고 도화지에 바플랏을 그림

- Embarked==C의 생존률이 가장 높음을 알 수 있음

- 위의 barplot을 그리는 코드에서 뒤의 .plot.bar를 제외한 결과는 다음과 같으며, 정확한 수치를 알려줌. 

 

 

f, ax = plt.subplots(2, 2, figsize=(20, 15)) #2차원(2x2) 도화지 만들기

sns.countplot('Embarked', data=df_train, ax=ax[0, 0])
ax[0, 0].set_title('1. Num of passengers Boarded')
#도화지의 (0, 0)위치에 Embarked의 countplot을 그림

sns.countplot('Embarked', hue='Sex', data=df_train, ax=ax[0, 1])
ax[0, 1].set_title('2. Male-Female split for embarked')
#도화지의 (0, 1)위치에 Sex에 따른 Embarked의 countplot을 그림

sns.countplot('Embarked', hue='Survived', data=df_train, ax=ax[1, 0])
ax[1, 0].set_title('3. Embarked vs Survived')
#도화지의 (1, 0)위치에 Survived에 따른 Embarked의 countplot을 그림

sns.countplot('Embarked', hue='Pclass', data=df_train, ax=ax[1, 1])
ax[1, 1].set_title('4. Embarked vs Pclass')
#도화지의 (1, 1)위치에 Pclass에 따른 Embarked의 countplot을 그림

plt.subplots_adjust(wspace=0.2, hspace=0.5) #subplot 간 상하좌우 간격
plt.show() #도화지 보여주기

- subplots간 간격을 맞춰주지 않으면 글자가 겹쳐 안예쁘니까 subplots_adjust 사용

- 이렇게 2차원으로 그래프를 그리면 Embarked와 다른 칼럼(변수)들 간의 관계를 파악하기 좋음

- Embarked==S의 수가 제일 많으나 그만큼 생존율은 C나 Q에 비해 낮음. 대부분이 남성, Pclass==3임.

- Embarked==C는 생존자의 비율이 더 크나 이는 여성의 비율과 Pclass==1의 비율 또한 높아서인 것 같음.

- Embarked==Q는 여성의 비율이 많으나 Pclass==3의 비율 또한 높아 생존율이 높지 않음