미식가의 개발 일기

[머신러닝] 결측치, 중복값 처리 본문

ML, DL

[머신러닝] 결측치, 중복값 처리

대체불가 핫걸 2024. 7. 12. 00:42

시리즈 결측치 처리

시리즈 데이터 생성
import pandas as pd

data = [20, None, 40, 50, None, 30, 70, None, 20, 50]
index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

series = pd.Series(data, index=index)
series

 

결측치 제거
res = series.dropna()
res

 

결측치 채우기
res = series.fillna(0)
res

 

중복값 찾기
res = series.duplicated()
res

 

중복값 제거
res = series.drop_duplicates()
res

 

데이터 프레임 결측치 처리

데이터 프레임 생성
data = {'grade': [1, 1, 1, 2, 2, 2],
        'subject': ['math', 'science', 'english', 'math', 'science', 'english'],
        'score': [70, 80, 100, np.nan, 50, np.nan]}
df = pd.DataFrame(data)
df

 

 결측치 확인
df.isna()

 

속성별 결측치 개수 확인
df.isna().sum()

 

결측치 포함 행 확인
df[df.isna().any(axis=1)]

 

결측치가 있는 행 제거
df.dropna()

 

특정 값으로 결측치 대체
  • 평균값으로 대체
mean_score = df['score'].mean()
df['score'] = df['score'].fillna(mean_score)
  • 최빈값으로 대체
mode_score = df['score'].mode() # 뒤에 [0]을 붙여주면 Name, dtype이 생략된 최빈값만 나옴
df['score'] = df['score'].fillna(mode_score)
  • 지정값으로 대체
# score의 결측치를 30으로 대체
fill = {'score': 30}
filled_df = df.fillna(fill)
filled_df

 

결측치 보간 -> 주변의 데이터로 빈 부분을 추정하여 채우는 방법
# 선형 보간
df.interpolate(method='linear')

 

중복 제거
df.drop_duplicates()

 

반응형