타이타닉 문제에서 Age(연령) 변수 결측치 채우기... 어떻게 채운거죠..?

2023.04.06 00:30 1,304 조회

guess_ages = np.zeros((2,3))

for dataset in combine:

  for i in range(0, 2):

    for j in range(0, 3):

      guess_df = dataset[(dataset['Sex'] == i) & \

                 (dataset['Pclass'] == j+1)]['Age'].dropna()

      # 위에서 guess_ages사이즈를 [2,3]으로 잡아뒀으므로 j의 범위도 이를 따름

       

      age_guess = guess_df.median()


      # age의 random값의 소수점을 .5에 가깝도록 변형

      guess_ages[i,j] = int( age_guess/0.5 + 0.5 ) * 0.5

       

  for i in range(0, 2):

    for j in range(0, 3):

      dataset.loc[ (dataset.Age.isnull()) & (dataset.Sex == i) & (dataset.Pclass == j+1),\

          'Age'] = guess_ages[i,j]


  dataset['Age'] = dataset['Age'].astype(int)


train_df.isnull().sum() 했더니 age 결측치가 채워졌습니다.

로그인이 필요합니다
0 / 1000
설빙더아이스
2023.04.18 20:06

dataset.loc[dataset['Age'].isnull(), 'Age'] = 채울 값
위 코드가 결측치 채우는 코드입니다.

올려주신 코드 중
dataset.loc[ (dataset.Age.isnull()) & (dataset.Sex == i) & (dataset.Pclass == j+1), 'Age'] = guess_ages[i,j]
도 거의 같은 코드라고 생각하시면 될 것 같아요!

피자빵
2023.04.20 11:28

👍