본문 바로가기
C.W.K.
Stream
Lesson 02 of 08 · published

Tabular Data 직관

~26 min · tabular, eda, pandas

Level 0Scout
0 XP0/48 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

모델을 고르기 전에 표를 읽어

학습 전에 자료를 들여다본 1분은 뒤에서 열 배로 돌아와. 표 형태 자료 탐색의 목표는 예쁜 그래프 모음이 아니라 모델 속에 숨을 놀라움을 먼저 찾는 거야. 한쪽으로 몰린 분포, 결측을 뜻하는 가짜 숫자, 철자가 다른 같은 범주, 시간대의 공백, 중복 식별자, 전체 신호를 사실상 독점하는 몇 행을 찾아야 해. 자료가 어떤 현실을 기록했는지 이해하지 못한 채 지표부터 계산하면 오류도 정교하게 자동화돼.

처음 확인할 열 가지

  1. 전체 행 수와 고유 식별자 수를 비교해 한 객체가 여러 번 나타나는지 봐.
  2. 열마다 결측 비율을 재고 특정 기간이나 집단에 몰리는지도 확인해.
  3. 범주형 열의 고유값 수와 가장 흔한 값을 펼쳐 오탈자와 희귀 범주를 찾아.
  4. 수치형 열의 최솟값, 사분위수, 중앙값, 최댓값을 단위와 함께 읽어.
  5. -1, 999, 9999처럼 결측이나 오류를 숫자로 숨긴 표식을 찾아.
  6. 목표값의 범주 비율이나 연속값 분포를 확인해.
  7. 시간 열의 시작과 끝, 수집이 끊긴 구간, 시간대 변환을 살펴.
  8. 완전 중복 행과 식별자 기준 중복을 따로 세어.
  9. 목표값과 입력값에서 극단치를 찾아 원본 사례를 직접 읽어.
  10. 피어슨 상관과 순위 상관을 함께 보고 지나치게 강한 단일 열을 표시해.

숫자를 현실 문장으로 번역해

중앙값이 42라는 사실만으로는 부족해. 42가 원화인지 달러인지, 일수인지 횟수인지, 사건 시점에 이미 알 수 있었는지 적어야 해. 범주 값도 코드표와 맞춰 보고, ‘unknown’과 빈칸이 같은 뜻인지 확인해. 탐색에서 발견한 의문은 그래프 아래 메모가 아니라 열 감사표의 결정으로 남겨야 다음 학습에서도 재현돼.

너무 좋은 신호부터 의심해

한 특성만으로 목표를 거의 완벽히 맞힌다면 대박보다 누출 가능성을 먼저 봐. 목표가 지나치게 깨끗하다면 뒤 단계 시스템이 이미 선별한 자료일 수 있어. 해당 열이 언제 생기고 누가 쓰며 예측 시점에도 존재하는지 원천까지 추적해. 열을 뺐을 때 성능이 크게 떨어지는 현상은 그 열을 지켜야 한다는 증거가 아니라 감사해야 한다는 경보다.

탐색 결과를 다음 행동으로 닫아

발견마다 처리 결정을 붙여. 단위 오류는 원천을 고치고, 드문 범주는 묶을지 보존할지 정하며, 중복은 어떤 행이 진짜인지 규칙을 세워. 극단치를 단순 삭제하지 말고 오류인지 중요한 고객인지 판별해. 이 결정을 코드와 자료 계약에 옮겨야 탐색이 일회성 노트북에서 끝나지 않아.

Code

한 화면에서 보는 첫 열 가지 탐색·python
import pandas as pd

df = pd.read_parquet("data/processed/train.parquet")
print(df.shape, df.duplicated().sum(), "duplicates")
print(df.isna().mean().sort_values(ascending=False).head(10))
print(df.select_dtypes("object").nunique().sort_values(ascending=False).head(10))
print(df["target"].value_counts(normalize=True))
숫자인 척하는 결측 표식 찾기·python
for col in df.select_dtypes("number").columns:
    counts = df[col].value_counts().head(3)
    if counts.iloc[0] > 0.05 * len(df) and counts.index[0] in {-1, 0, 999, 9999}:
        print(f"⚠️  {col}: {counts.index[0]} appears in {counts.iloc[0]} rows")

External links

Exercise

처음 확인할 열 가지를 데이터셋에 적용해 예상 밖의 사실 세 개를 적어. 각각이 특성 정의, 목표값 정의, 판정 안내서 가운데 무엇을 바꾸는지 결정하고 근거를 notebooks/01_eda.ipynb에 남겨.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.