Study/kaggle

캐글 타이타닉 Titanic - 10. Feature engineering - Fill Null in Embarked and categorize Age

Do잇 2023. 3. 18. 17:56

# df_train데이터 'Embarked'의 결측치 확인

df_train['Embarked'].isnull().sum()

2개가 나온다.

df_train['Embarked'].fillna(df_train['Embarked'].mode,inplace = True)

'Embarked'의 최빈값으로 넣어준다. 최빈값은 'S'

 

# df_train에 Age_cat이라는 열을 만들어서 나이대별로 나눠주기

df_train['Age_cat']=0

  => 0값을 넣은 데이터프레임을 만든 것.

 

df_train.loc[df_train['Age'] < 10,'Age_cat'] = 0
df_train.loc[(10 <= df_train['Age'])&(df_train['Age']<20),'Age_cat']=1
df_train.loc[(20 <= df_train['Age'])&(df_train['Age']<30),'Age_cat']=2
df_train.loc[(30 <= df_train['Age'])&(df_train['Age']<40),'Age_cat']=3
df_train.loc[(40 <= df_train['Age'])&(df_train['Age']<50),'Age_cat']=4
df_train.loc[(50 <= df_train['Age'])&(df_train['Age']<60),'Age_cat']=5
df_train.loc[(60 <= df_train['Age'])&(df_train['Age']<70),'Age_cat']=6
df_train.loc[(70 <= df_train['Age']),'Age_cat']=7

 

위 방법은 너무 반복적이고 길므로 함수를 만들어 적용시킬 수도 있다.

def category_age(x):
    if x < 10:
        return 0
    elif x < 20:
        return 1
    elif x < 30:
        return 2
    elif x < 40:
        return 3
    elif x < 50:
        return 4
    elif x < 60:
        return 5
    elif x < 70:
        return 6
    else:
        return 7
df_train['Age_cat_2'] = df_train['Age'].apply(category_age)

 

 

🔍 any()와 all()

any(), all() 둘다 boolean(True or False) 값을 return 해주는 pandas의 내장함수이다.

데이터분석을 하다보면, 특정 값을 가진 행이 있는지 판별해야하는 경우가 있다.

그 특정값이 몇개가 있는지가 아니라 단순히 1개라도 있는지, 아니면 전체 행이 그 값을 가졌는지 여부를 판단해줄 때

 any() 혹은 all()을 써줄 수 있다.

(df_train['Age_cat']==df_train['Age_cat_2']).all()

all()의 경우 => 모두 True일 경우 True, 한개라도 False가 있을경우 False

any()의 경우 => 한개라도 True가 있는 경우 True, True가 하나도 없을 경우 False