안녕하세요 콥스랩(COBS LAB)입니다. 오늘 소개해드릴 주제는 판다스 데이터 탐색 단계에서 이상치에 대해서 설명하도록 하겠습니다. 데이터 탐색 시 이상치(outlier) 처리 방법은 매우 중요합니다. 이상치는 일반적인 패턴에서 벗어나는 값으로, 데이터 분석 결과를 왜곡시킬 수 있습니다. 따라서 이상치를 식별하고 처리하는 것은 데이터 분석 과정에서 필수적인 단계입니다.
데이터 탐색
데이터 탐색은 데이터를 분석하기 전에 필요한 과정으로, 데이터의 구조와 특성을 파악하는 과정입니다. 데이터 탐색을 통해 데이터의 결측치, 이상치, 분포, 상관관계 등을 확인할 수 있습니다.
import pandas as pd
data = pd.read_csv('data.csv')
이상치란?
이상치란, 일반적인 데이터 분포에서 벗어나는 값으로서, 다른 값들과 큰 차이가 있는 값입니다. 이상치가 있는 데이터는 일반적으로 분석 결과를 왜곡시키거나 모델의 정확도를 낮추는 원인이 될 수 있으므로, 이상치를 제거하거나 대체하는 등의 처리하는 것은 데이터 분석 과정에서 필수적인 단계입니다.
이상치 처리 방법
이상치 제거
이상치가 포함된 행(row) 또는 열(column)을 삭제하는 방법입니다. 이 방법은 간단하지만, 이상치가 많은 경우에는 데이터 손실이 크게 발생할 수 있습니다. 따라서 이 방법은 이상치가 일부인 경우에 적합합니다.
data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B': [5, 6, 7, 8, 9, 10, 11, 12, 13, 100]}
df = pd.DataFrame(data)
'A'와 'B' 두 개의 열(column)이 있습니다. 'B'칼럼에 이상치(outlier)가 포함되어 있습니다.
# 이상치 제거
df = df[df['B'] < 50]
print(df)
'B' 열에서 50보다 큰 값을 가진 행을 제거하였습니다.
이상치 대체
이상치를 다른 값으로 대체하는 방법입니다. 대체할 값을 평균, 중앙값, 최빈값 등으로 지정할 수 있으며, 보간(interpolation) 기법을 이용해서 대체하는 방법도 있습니다. 이 방법은 이상치가 많은 경우에 유용합니다.
#이상치 대체
Q1 = df['B'].quantile(0.25)
Q3 = df['B'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df['B'] = np.where(df['B'] > upper_bound, upper_bound, df['B'])
df['B'] = np.where(df['B'] < lower_bound, lower_bound, df['B'])
print(df)
IQR(Interquartile Range)을 이용해서 이상치를 대체하는 방법을 사용합니다. IQR은 제1 사분위수(Q1)와 제3 사분위수(Q3)의 차이로서, 데이터의 중심부에 위치한 값들의 범위를 나타냅니다. 이 방법은 이상치가 많은 경우에 유용합니다.
'B'칼럼에서 제1 사분위수(Q1)와 제3 사분위수(Q3)를 구합니다. 그다음, IQR을 계산하고, IQR의 1.5배만큼 위와 아래로 범위를 지정하여 이 범위를 벗어나는 값들을 이상치로 판단하고 대체해줍니다.
이상치가 100인 값이 IQR 기반으로 대체된 것을 확인할 수 있습니다.
이상치는 데이터 분석에서 중요한 이슈 중 하나이며, 이상치가 포함된 데이터를 처리하는 방법에 대해서는 여러 가지 방법이 있습니다. 이상치 제거 방법은 이상치가 일부인 경우에 적합하며, 이상치 대체 방법은 이상치가 많은 경우에 유용합니다. 판다스를 이용해서 이상치를 처리하는 방법을 익혀두면, 데이터 분석에서 유용하게 활용할 수 있습니다.
'pandas' 카테고리의 다른 글
Pandas merge, join, concat의 차이와 활용 예시 (0) | 2023.03.21 |
---|---|
데이터 전처리에서 가장 중요한! 판다스(Pandas)의 데이터 타입 변경 방법 (0) | 2023.03.21 |
Pandas의 Concat 함수를 활용한 데이터 프레임 병합 방법 (0) | 2023.03.20 |
판다스로 데이터 전처리하기: 결측값과 중복값 처리 (0) | 2023.03.20 |
판다스(Pandas) 칼럼(Column)과 인덱스(Index)를 활용한 데이터 분석과 시각화 (0) | 2023.03.20 |
댓글