새소식

✅ 작업형2: 컬럼 삭제는? 언제하는거야?

기출 vs 연습문제의 차이점

기출문제나 예시문제에서는 컬럼을 삭제하는 경우가 없었습니다.

하지만 연습/모의 문제에서 더 복잡한 데이터를 다루다 보면 컬럼 삭제가 필요한 상황이 생깁니다.

 

1⃣ 모든 값이 유니크(Unique)할 때

# 예: ID, 고객번호, 주문번호 등
df['customer_id'].nunique() == len(df)  # True면 삭제 고려
  • 숫자형: 그냥 두어도 모델이 알아서 중요도를 낮게 평가함

    • 삭제하지 않아도 큰 문제 없음

  • 문자형: 인코딩 시 차원이 폭발하므로 삭제 추천!

    • Label Encoding하면 의미 없는 순서 관계 생성

    • One-Hot Encoding하면 컬럼 수 = 행 수가 급증합니다.(1분내 소화 불과)

2⃣ 인코딩이 어려울 때

# 예: 자유 텍스트, 주소, 이메일 등
df['comment'].head()
# "배송이 빨라요", "포장이 깔끔합니다", "재구매 의사 있음"...
  • 베이스라인: 일단 삭제하고 모델 돌리기

  • 심화 전략: 시간이 남으면 살릴 방법 고민

    • 텍스트 길이, 특정 키워드 포함 여부 등 파생변수 생성

    • ex) 항공편명(KE1234) → 항공사(KE) + 편명(1234) 따로 추출

3⃣ 결측치가 과도하게 많을 때 (80~90% 이상)

df['컬럼'].isnull().sum() / len(df)
  • 베이스라인: 일단 삭제하고 안전하게 가기

  • 심화 전략: 시간이 남으면 살릴 방법 고민

    • 결측 여부 자체를 임의값으로 대입

       

      삭제한 평가지표 결과와 채운 후 결과 비교

💡 위와 같이 처리가 어려운 컬럼이 나온다면?

  1. 1차: 베이스라인 빠르게 완성 (30~40분)

    • 2번, 3번 케이스는 과감히 삭제

    • 1번은 문자형이면 삭제, 숫자형이면 그대로 둬도 OK

    • 일단 제출 가능한 코드 완성

  2. 2차: 시간이 남으면 심화 (여유 있을 때만)

    • 삭제했던 컬럼 살릴 방법 시도

    • 성능 개선 여부 확인

 

주의사항

  • 시간 관리가 최우선! 완벽한 전처리보다 제출 가능한 코드가 중요

     

  • 베이스라인에서는 삭제하고 1차 제출 후, 시간 남을 때 재도전! 2차 제출

undefined
채널톡 아이콘