반응형
7-2 이상한 데이터를 찾아라! - 이상치 정제하기
이상치(anomaly): 정상 범위에서 크게 벗어난 값
이상치 제거하기-존재할 수 없는 값
df = pd.DataFrame({'sex' : [1,2,1,3,2,1],
'score' : [5,4,3,4,2,6]})
df
이상치 확인하기
df['sex'].value_counts().sort_index()
"""
1 3
2 2
3 1
Name: sex, dtype: int64
"""
df['score'].value_counts().sort_index()
"""
2 1
3 1
4 2
5 1
6 1
Name: score, dtype: int64
"""
결측 처리하기
df['sex'] = np.where(df['sex'] == 3, np.nan, df['sex'])
df
df['score'] = np.where(df['score'] > 5, np.nan, df['score'])
df
df.dropna(subset = ['sex', 'score']).groupby('sex').agg(mean_score = ('score', 'mean'))
※ np.where()는 문자와 NaN을 함께 반환 불가
df = pd.DataFrame({'x1' : [1, 1, 2, 2]})
df['x2'] = np.where(df['x1'] == 1, 'a', np.nan) # 조건에 맞을 때 문자 부여
df
df.isna()
np.where()을 이용해 결측치로 만들 값에 문자 부여
# 결측치로 만들 값에 문자 부여
df['x2'] = np.where(df['x1'] == 1, 'a', 'etc')
df.replace()를 이용해 결측치로 만들 문자를 np.nan으로 바꿈. df.replace()는 입력한 값을 다른 값으로 바꾸는 기능 함
# 'etc'를 NaN으로 바꾸기
df['x2'] = df['x2'].replace('etc', np.nan)
df
df.isna()
※ 해당 내용은 <Do it! 파이썬 데이터 분석>의 내용을 토대로 학습하며 정리한 내용입니다.
반응형
'데이터 분석 학습' 카테고리의 다른 글
8장 그래프 만들기 (1) (0) | 2023.04.17 |
---|---|
7장 데이터 정제 - 빠진 데이터, 이상한 데이터 제거하기 (3) (0) | 2023.04.16 |
7장 데이터 정제 - 빠진 데이터, 이상한 데이터 제거하기 (1) (0) | 2023.04.14 |
6장 자유자재로 데이터 가공하기 (7) (0) | 2023.04.13 |
6장 자유자재로 데이터 가공하기 (6) (0) | 2023.04.12 |