월간 데이콘 항공편 지연 예측 AI 경진대회

결측치 처리 코드 에러

2023.04.27 10:24 1,311 Views

안녕하세요 다름이 아니라 데이터 결측치를 처리하기 위해서 다음과 같은 코드를 작성했습니다.


## 'Airline', 'Carrier_Code(IATA)'가 같은면 Carrier_ID(DOT)가 같은지 확인 

check = tmp_train.groupby(['Airline', 'Carrier_Code(IATA)'])['Carrier_ID(DOT)'].nunique().reset_index(name='count')

check = check[check['count'] > 1]

check


## 'Airline', 'Carrier_Code(IATA)' 같은면 Carrier_ID(DOT)가 같기 때문에 같은 경우에 채워줌 

tmp_train['Carrier_ID(DOT)'] = tmp_train.groupby(['Airline', 'Carrier_Code(IATA)'])['Carrier_ID(DOT)'].transform(lambda x: x.fillna(x.mode()))


위의 경우에는 결측치가 대체 되어서 잘 처리가 되는데


## 'Airline', 'Tail_Number' 가 같은면 Carrier_ID(DOT)가 같은지 확인 

check = tmp_train.groupby(['Tail_Number','Airline'])['Carrier_ID(DOT)'].nunique().reset_index(name='count')

check = check[check['count'] > 1]

check


tmp_train['Carrier_ID(DOT)'] = tmp_train.groupby(['Airline', 'Tail_Number'])['Carrier_ID(DOT)'].transform(lambda x: x.fillna(x.mode()[0]))


같은 코드로 컬럼만 바꿔서 진행하면 key error 0이라고 뜨더군요. 하지만 'Airline', 'Tail_Number'가 같은 경우가 존재하는데 최빈 값으로 결측치를 처리하려면 왜 안들어가지는지 궁금해서 이렇게 글 남깁니다.