📌 값 변경 및 조건 처리
- 데이터를 실제로 분석 가능한 형태로 바꾸는 핵심 작업
👉 값 변경 및 조건 처리가 필요할 때
- 데이터에 오타나 이상한 값이 있을 때
- 특정 값을 다른 값으로 대체하고 싶을 때
- 조건에 따라 그룹화하고 싶을 때
- 여러 열을 조합하거나 연산해서 새로운 열을 만들고 싶을 때
👉 특정 값 변경하기 (replace)
df['gender'].replace({'남': 'male', '여': 'female'}, inplace=True)
df['score'].replace(-1, np.nan, inplace=True)
👉 조건 처리 (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]
females = df[df['gender'] == 'female']
👉 자주 하는 실수
| 실수 | 예시 | 해결 방법 |
|---|
| 조건이 잘못 됨 | 'and', 'or' 대신 &, 파이프기호 , ~ | 사용해야 함 |
| 복수 조건 누락 | else if가 안 됨 | np.select()로 다중 조건 처리 |
| inplace 빼먹음 | 변경한 값이 반영 안 됨 | inplace=True 또는 재할당 |
| 문자열 공백, 대소문자 미처리 | ‘Kim ’, 'kim' 다른 값으로 인식됨 | .str.strip(), .str.lower() 등 사용 |
👉 체크리스트
- 이상한 값(오타, 오류)은 정리했는가?
- 조건에 맞는 분류값을 잘 만들었는가?
- 여러 열을 활용한 파생변수를 만들었는가?
- 문자열 데이터는 깔끔하게 정리했는가?