캐글 타이타닉 7. EDA - FamilySize
- Series 끼리는 더하고 빼는 등의 연산이 가능하다
#FamilySize라는 칼럼 만들기
df_train['FamilySize'] = df_train['SibSp'] + df_train['Parch'] + 1
df_test['FamilySize'] = df_test['SibSp'] + df_test['Parch'] +1
f, ax = plt.subplots(1, 3, figsize=(40, 10))
#도화지(f) 만들고 ax를 1x3으로 나눔(subplots)
sns.countplot('FamilySize', data=df_train, ax=ax[0])
ax[0].set_title('(1) No. Of Passengers Boarded', y=1.02)
#ax[0]에 FamilySize의 countplot을 그리고 타이틀 이름, 위치 설정
sns.countplot('FamilySize', hue='Survived', data=df_train, ax=ax[1])
ax[1].set_title('(2) Survived countplot depending on FamilySize', y=1.02)
#ax[1]에 FamilySize를 Survived에 따라 구분한 countplot을 그리고 타이틀 이름, 위치 설정
df_train[['FamilySize', 'Survived']].groupby(['FamilySize'], as_index=True).\
mean().sort_values(by='Survived', ascending=False).plot.bar(ax=ax[2])
ax[2].set_title('(3) Survived rate depending on FamilySize', y=1.02)
#ax[2]에 df_train의 FamilySize와 Survived칼럼만 가져온 뒤 FamilySize에 따라 나눈 평균 정렬, 바플랏
plt.subplots_adjust(wspace=0.2, hspace=0.5) #서브플랏 간 간격 조정
plt.show() #전체 그림(도화지) 보여주기
캐글 타이타닉 8. EDA - Fare, Cabin, Ticket
fig, ax = plt.subplots(1, 1, figsize=(8, 8))
#도화지(f)를 만들고 ax를 1x1로 나눔
g = sns.distplot(df_train['Fare'], color='b', label='Skewness:{:.2f}'.\
format(df_train['Fare'].skew()), ax=ax)
g = g.legend(loc='best')
#df_train의 Fare칼럼으로 만든 distplot을 g에 저장. 이후 g의 '최적의 위치'에 레전드를 넣음
- Skewnewss : 왜도(얼마나 비대칭인지 알려주는 척도)
(* f-스트링(label=f'Skewness:{df_train['Fare'].skew():.2f}') 쓰려고하니까 오류(invalid syntax)가 계속 나길래 그냥 예시 그대로 format 썼다. 원래 df에서는 f-string을 못쓰는건가..?)
df_test.loc[df_test.Fare.isnull(), 'Fare'] = df_test['Fare'].mean()
#test파일 내의 Fare칼럼 null을 mean으로 치환
df_train['Fare'] = df_train['Fare'].map(lambda i: np.log(i) if i>0 else 0)
df_test['Fare'] = df_test['Fare'].map(lambda i: np.log(i) if i>0 else 0)
#train과 test의 Fare칼럼값이 양수인 경우 log, 그렇지 않은 경우 0으로 치환
f, ax = plt.subplots(1, 1, figsize=(8, 8))
#도화지(f)를 만들고 ax를 1x1로 나눔
g = sns.distplot(df_train['Fare'], color='b', label='Skewnewss : {:.2f}'.\
format(df_train['Fare'].skew()), ax=ax)
g = g.legend(loc='best')
#df_train의 Fare칼럼으로 만든 distplot을 g라 저장한 뒤 '최적의 위치'에 레전드를 넣음
- log로 치환했더니 왜도가 많이 줄었다. 이같은 과정을 Feature Engineering이라 한다.
*Feature Engineering : 모델의 성능을 좋게 해주기 위해 피처 값을 조작하는 것.
- 특정 Series, Value에 동일한 operation을 적용하고 싶을 때에는 map, apply에 함수를 넣으면 된다.
- DataFrame[Colname].value_counts()는 데이터프레임 칼럼 내의 각 값들과 도수를 알려준다.
(Cabin은 대부분의 데이터가 null값이라 생략, ticket은 null은 없으나 string data이므로 생략)
'STUDY' 카테고리의 다른 글
파이썬 스터디 5주차(캐글) (0) | 2022.02.04 |
---|---|
파이썬 스터디 5주차(백준) (2) | 2022.02.03 |
파이썬 스터디 4주차(백준) (0) | 2022.01.30 |
파이썬 스터디 3주차(머신러닝) (2) | 2022.01.29 |
파이썬 스터디 3주차(캐글) (0) | 2022.01.26 |