pandas - [데이터 전처리] 값 변경 및 조건 처리

c.haha.e·2025년 3월 24일

pandas

목록 보기
9/17

📌 값 변경 및 조건 처리

  • 데이터를 실제로 분석 가능한 형태로 바꾸는 핵심 작업

👉 값 변경 및 조건 처리가 필요할 때

  • 데이터에 오타나 이상한 값이 있을 때
  • 특정 값을 다른 값으로 대체하고 싶을 때
  • 조건에 따라 그룹화하고 싶을 때
  • 여러 열을 조합하거나 연산해서 새로운 열을 만들고 싶을 때

👉 특정 값 변경하기 (replace)

df['gender'].replace({'남': 'male', '여': 'female'}, inplace=True)
df['score'].replace(-1, np.nan, inplace=True)  # 이상값 -1을 결측치로

👉 조건 처리 (apply + lambda)

df['level'] = df['score'].apply(lambda x: '상' if x >= 90 else '중' if x >= 70 else '하')

👉 여러 조건 처리 (np.where, np.select)

import numpy as np

# 단일 조건
df['pass'] = np.where(df['score'] >= 60, '합격', '불합격')

# 다중 조건
conditions = [
    (df['score'] >= 90),
    (df['score'] >= 70) & (df['score'] < 90),
    (df['score'] < 70)
]
choices = ['A', 'B', 'C']
df['grade'] = np.select(conditions, choices)
코드를 입력하세요

👉 열 간 연산

df['총점'] = df['국어'] + df['수학'] + df['영어']
df['평균'] = df[['국어', '수학', '영어']].mean(axis=1)

👉 문자열 처리

df['name'] = df['name'].str.strip()              # 양쪽 공백 제거
df['email'] = df['email'].str.lower()            # 소문자로
df['code'] = df['code'].str.replace('-', '')     # 특정 문자 제거

👉 조건 필터링

high_scores = df[df['score'] > 80]             # 80점 이상만 추출
females = df[df['gender'] == 'female']         # gender가 female인 행만

👉 자주 하는 실수

실수예시해결 방법
조건이 잘못 됨'and', 'or' 대신 &, 파이프기호 , ~사용해야 함
복수 조건 누락else if가 안 됨np.select()로 다중 조건 처리
inplace 빼먹음변경한 값이 반영 안 됨inplace=True 또는 재할당
문자열 공백, 대소문자 미처리‘Kim ’, 'kim' 다른 값으로 인식됨.str.strip(), .str.lower() 등 사용

👉 체크리스트

  • 이상한 값(오타, 오류)은 정리했는가?
  • 조건에 맞는 분류값을 잘 만들었는가?
  • 여러 열을 활용한 파생변수를 만들었는가?
  • 문자열 데이터는 깔끔하게 정리했는가?
profile
기록용 블로그

0개의 댓글