-
[2월 2주차-2/12(2)]📝 Pandas로 데이터 정제하기: 이상치 & 결측치 처리Why Not SW CAMP 5기/수업 기록 2025. 2. 12. 11:55
데이터를 분석하기 전에 결측치와 이상치를 처리하는 것은 필수! 🚀 이번 글에서는 pandas를 활용하여 데이터를 깔끔하게 정제하는 방법을 배워보자. 💡
🔍 결측치 찾기 및 처리
import pandas as pd import numpy as np df = pd.DataFrame({'sex' :['M','F',np.nan,'M','F'], 'score': [5,4,3,4,np.nan]})✅ 결측치 확인하기:
pd.isna(df)📌 결과:
sex score 0 False False 1 False False 2 True False 3 False False 4 False True✅ 컬럼별 결측치 개수 확인:
pd.isna(df).sum()📌 결과:
sex 1 score 1✅ 결측치 제거:
df.dropna(subset=['score'])✅ 평균값으로 결측치 대체:
df['score'] = df['score'].fillna(df['score'].mean())
🚨 이상치 찾기 및 처리
✅ 이상치 확인:
df['sex'].value_counts(sort=False).sort_index()📌 결과:
1 3 2 2 3 1 <- 이상치 발견!✅ 이상치를 결측치로 변환:
df['sex'] = np.where(df['sex']==3, np.nan, df['sex']) df['score'] = np.where(df['score']>5, np.nan, df['score'])✅ 이상치 제거 후 평균값 계산:
df.dropna(subset=['sex', 'score']).groupby('sex').agg(mean_score = ('score','mean'))
📊 Boxplot을 활용한 이상치 탐색
✅ 상자 그림으로 극단치 시각화:
import matplotlib.pyplot as plt import seaborn as sns mpg = pd.read_csv('./data/mpg.csv') sns.boxplot(data=mpg, y='hwy') plt.show()✅ 극단치 처리:
pct25 = mpg['hwy'].quantile(.25) pct75 = mpg['hwy'].quantile(.75) iqr = pct75 - pct25 min_b = pct25 - 1.5*iqr max_b = pct75 + 1.5*iqr mpg['hwy'] = np.where((mpg['hwy']<min_b)|(mpg['hwy']>max_b), np.nan, mpg['hwy'])✅ 이상치 제거 후 그룹별 평균:
mpg.dropna(subset=['hwy']).groupby('drv').agg(mean_hwy = ('hwy', 'mean'))📌 결과:
mean_hwy drv 4 19.17 f 27.72 r 21.00
🎯 정리 🎯 ✅ 결측치 처리:
- isna()로 확인하고 dropna() 또는 fillna() 사용
✅ 이상치 처리:
- value_counts() 또는 boxplot 활용하여 탐색
- np.where()를 이용해 이상치를 결측치로 변환 후 처리
이제 깔끔한 데이터로 분석을 시작해보자! 🚀📊
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[2월 2주차-2/13(1)]📊 통계 분석 기법을 이용한 가설 검정 (0) 2025.02.13 [2월 2주차-2/12(3)]한국복지패널데이터로 한국인의 삶을 분석해보자! 🧐 (0) 2025.02.13 [2월 2주차-2/12(1)]이터레이터(Iterator)와 제너레이터(Generator) 쉽게 이해하기 (0) 2025.02.12 [2월 2주차-2/11] Python 기초 문법 정리 (0) 2025.02.11 [2월 1주차-2/7(4)]🍗 Python으로 치킨 브랜드 데이터 분석 & 시각화! 📊 (0) 2025.02.07