기출 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차: 베이스라인 빠르게 완성 (30~40분)
2번, 3번 케이스는 과감히 삭제
1번은 문자형이면 삭제, 숫자형이면 그대로 둬도 OK
일단 제출 가능한 코드 완성
2차: 시간이 남으면 심화 (여유 있을 때만)
삭제했던 컬럼 살릴 방법 시도
성능 개선 여부 확인
⚠ 주의사항
시간 관리가 최우선! 완벽한 전처리보다 제출 가능한 코드가 중요
베이스라인에서는 삭제하고 1차 제출 후, 시간 남을 때 재도전! 2차 제출