인프런 커뮤니티 질문&답변

권효진님의 프로필 이미지
권효진

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

모델링 및 평가(분류)

3-5 Classification의 간단한 결측치 처리 관련

해결된 질문

작성

·

28

0

유사 질문 있었는데 답변 확인해도 잘 모르겠어서 다시 질문 드립니다.

# 간단한 결측치 처리
X_train = X_train.fillna(0) 
X_test = X_test.fillna(0)

이 부분에서 수치형 외에 범주형에도 0으로 대입되는게 맞나요?

아니면 이렇게 해도 문자가 아니기 때문에 범주형에는 대입이 안 되는 건가요?

만약 범주형에만 결측치를 처리한다면 다음과 같이 할 수 있나요?

X_train = X_train.fillna('X')

X_test = X_test.fillna('X')

 

답변 3

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

X_train.fillna(0)

이 코드는 X_train에 결측치가 있다면 모두 0을 채우는 코드입니다.

만약 수치형 외 범주형에도 결측치가 있다면 0으로 대체됩니다

 

결측치는 컬럼별로 결측치를 채우는 것이 가장 좋아요

  • 숫자형: 평균, 중앙 등

  • 문자형: 최빈, 결측치를 표현하는 새로운 문자

X_train['컬럼'] = ...

 

 

0

권효진님의 프로필 이미지
권효진
질문자

그럼 3-5 Classification의 간단한 결측치 처리 부분에서 풀이와 달리,

X_train[cols] = X_train[cols].fillna(0) 로 하는 게 좀 더 정확한 값이 나온다는 걸까요 ..

0

안녕하세요, 인프런 AI 인턴입니다. 권효진님.

결측치 처리에 대한 질문을 주셨군요. 수치형뿐만 아니라 명목형(범주형) 데이터에도 결측치를 어떻게 처리할 수 있는지 궁금하신 것 같습니다.

결측치 처리 기본 개념

  1. 수치형 결측치 처리:

    • 일반적으로 수치형 변수의 결측치는 평균(mean)이나 중앙값(median)으로 처리합니다. 특정 상황에서는 0으로 채우기도 하지만, 이는 데이터의 성격 및 분석 목적에 따라 적절성을 검토해야 합니다.
  2. 범주형 결측치 처리:

    • 범주형 변수의 경우, 가장 자주 나타나는 값인 최빈값(mode)으로 채우는 것이 일반적입니다. 질문에서 제시하신 'X'와 같은 특정 문자열로 결측치를 채우는 것도 한 가지 방법이며 분석 목적에 따라 선택할 수 있습니다.

코드에 대한 설명

  • X_train.fillna(0)X_test.fillna(0)로 처리하는 경우, 수치형과 명목형 변수 모두에서 결측치를 0으로 채웁니다.

    • 명목형에 0이 대입될 경우, 일반적으로 해당 변수가 숫자형 데이터로 인식되지 않도록 주의해야 합니다.
  • 범주형만 특정 값으로 처리하고 싶을 경우, 컬럼별로 접근하는 것이 좋습니다.

    # 범주형만 'X'로 처리
    X_train['category_column'] = X_train['category_column'].fillna('X')
    X_test['category_column'] = X_test['category_column'].fillna('X')
    

이러한 결측치 처리는 데이터 모델링 과정에서 매우 중요합니다. 따라서, 데이터의 특성에 맞는 적절한 방법을 선택하는 것이 필요합니다. 우선적으로는 범주형과 수치형의 특성을 고려하여 데이터 손실이나 왜곡을 방지하는 방향으로 진행하는 것이 좋습니다.

질문자님의 이해를 돕기 위해 유사한 질문과 답변을 소개해 드립니다:
- 결측치 처리: 수치형 및 명목형 데이터에 대한 결측치 처리 방법에 대한 토론입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

권효진님의 프로필 이미지
권효진

작성한 질문수

질문하기