해결된 질문
작성
·
52
0
# age 컬럼 평균값으로 채우기
value = int(X_train['age'].mean())
print("채울 값:", value)
X_train['age'] = X_train['age'].fillna(value)
X_test['age'] = X_test['age'].fillna(value)
강의에서는 value 함수와 print 사용해서 평균값 채우셨는데
X_train['age'] = X_train['age'].fillna(X_train['age'].mean())
X_train.isnull().sum()
이렇게 간단하게 채우고 isnull().sum()으로 결측치가 0인지 확인하는 방법도 괜찮나요?
value랑 print 부분이 이해하기 어렵고 실제로 적용하기도 어려울 것 같아서요 ㅜㅜ!!
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 최수영님.
질문하신 내용은 결측치를 mean()
함수로 직접 채우는 방법에 대한 것입니다. 결론부터 말씀드리자면, 두 방법 모두 사용하는 데 전혀 문제가 없습니다.
첫 번째 방법:
value = int(X_train['age'].mean())
X_train['age'] = X_train['age'].fillna(value)
X_test['age'] = X_test['age'].fillna(value)
이 코드는 X_train['age']
의 평균값을 value
변수에 저장한 후, 이를 사용하여 fillna()
함수를 통해 결측치를 채우는 방식입니다. 중간에 print
를 사용하면 계산된 평균값을 확인할 수 있습니다. 다만, print
가 코딩의 일부 함수 내부에서 직접적인 역할을 하는 것은 아니며, 디버깅 및 중간 결과를 확인하기 위한 추가적인 용도로 사용된 것입니다.
두 번째 방법:
X_train['age'] = X_train['age'].fillna(X_train['age'].mean())
X_train.isnull().sum()
이 코드는 X_train['age'].mean()
을 바로 fillna()
함수의 인자로 전달하여 X_train['age']
의 결측치를 채웁니다. isnull().sum()
을 사용하여 결측치가 제대로 채워졌는지 확인할 수 있습니다.
두 방법 모두 동일한 효과를 가지므로, 어떤 방법을 사용하든 큰 차이는 없습니다. 다만, 중간값을 다른 프로세스에서 사용하길 원하거나, 여러 차례 평균값을 재사용해야 하는 경우에는 첫 번째 방법이 좀 더 편리할 수 있습니다. 또한, 디버깅이나 학습 목적으로 중간 과정을 명확히 확인하고 싶다면 print
를 사용하여 평균값을 출력하는 방식도 유익할 수 있습니다.
결측치 처리와 관련하여 데이터 전처리에서 중요한 부분은, 누락된 데이터를 채우고 검토하는 방식이 일치하고 데이터 누수를 방지할 수 있도록 신중하게 고려해야 한다는 점입니다.
다음 게시물에서는 유사한 의문을 해결하고 있으니 참조하시면 좋을 것 같습니다:
- “3-3 age 컬럼 평균값으로 채울 때 질문”에서는 왜 X_train
의 평균값을 사용하여 테스트 데이터의 결측치를 채우는지를 설명합니다. 이는 데이터 누수를 방지하고 모델 성능을 떨어뜨리지 않기 위함입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.