📌 Pandas 데이터 전처리 전체 흐름
Pandas 전처리 12단계 요약 정리
데이터 불러오기 (Import)
pd.read_csv(), pd.read_excel() 등으로 다양한 형식의 파일 읽기
- 인코딩 문제, 구분자 확인, 결측치 문자열 처리 (
na_values)
pd.read_csv('data.csv', encoding='utf-8', sep=',', na_values=['-', 'N/A'])
기초 정보 확인 (Info & Describe)
df.info(), df.describe(), df.dtypes로 데이터 구조와 통계 파악
df.info()
df.describe()
df.describe(include='object')
결측치 처리 (Missing Values)
isnull(), fillna(), dropna()로 결측값 탐지 및 처리
df.dropna()
df.fillna(df['col'].mean(), inplace=True)
중복값 처리 (Duplicates)
duplicated(), drop_duplicates()로 중복 행 탐지 및 제거
df.drop_duplicates(subset=['col'], keep='first')
데이터 타입 변환 (Data Types)
astype(), pd.to_datetime(), pd.to_numeric() 등 사용
df['col'] = pd.to_numeric(df['col'], errors='coerce')
df['date'] = pd.to_datetime(df['date'])
열/행 정리 (Column & Row Cleaning)
drop(), rename(), reset_index() 등으로 열과 행 정리
df.drop(['col1', 'col2'], axis=1, inplace=True)
df.columns = df.columns.str.strip().str.lower()
값 변경 및 조건 처리 (Replace & Apply)
replace(), apply(), np.where() 등으로 값 수정 및 조건 분기
df['level'] = df['score'].apply(lambda x: '상' if x > 90 else '하')
인코딩 (Encoding)
LabelEncoder, get_dummies() 등으로 범주형 데이터 변환
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['grade'] = le.fit_transform(df['grade'])
pd.get_dummies(df, columns=['gender'], drop_first=True)
스케일링 & 정규화 (Scaling & Normalization)
MinMaxScaler, StandardScaler, RobustScaler, Normalizer 등
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df[['col1', 'col2']] = scaler.fit_transform(df[['col1', 'col2']])
그룹화 및 집계 (Grouping & Aggregation)
groupby(), agg(), transform(), reset_index() 사용
df.groupby('region')['income'].sum().reset_index()
df.groupby(['gender', 'grade'])['score'].mean()
데이터 병합 및 연결 (Merging & Concatenation)
pd.merge(), pd.concat(), join()으로 데이터 결합
pd.merge(df1, df2, on='key', how='left')
pd.concat([df1, df2], axis=0, ignore_index=True)
필터링 & 정렬 (Filtering & Sorting)
- 조건 필터링, 정렬, 문자열 조건 처리, 결측치 기반 필터링 등
df[df['score'] >= 80]
df.sort_values(by='score', ascending=False)
df[df['name'].str.contains('김')]
전처리 체크리스트
- 결측치와 중복값을 정확히 탐지하고 적절히 처리했는가?
- 수치형/범주형/날짜형 등 데이터 타입은 올바르게 지정되어 있는가?
- 이상치(outlier)나 분포의 왜곡이 심한 변수는 없는가?
- 조건 처리, 값 치환 등 데이터 가공이 목적에 맞게 수행되었는가?
- 범주형 변수는 인코딩(Label/One-Hot) 완료되었는가?
- 수치형 변수는 모델 학습 전에 적절히 스케일링 또는 정규화되었는가?
- 필요한 열만 남기고, 불필요한 열/행은 삭제했는가?
- 분석/시각화/모델링에 사용할 수 있도록 구조가 정리되었는가?
- 여러 데이터셋을 병합 또는 연결할 경우, 기준 열이 정확히 매칭되었는가?
- 최종 데이터는 정렬/필터링 되어 깔끔한 상태인가?