MLOps 부트캠프 by 한경+토스뱅크/Python

DataFrame - 이상점 찾고 처리하기

나니니 2024. 8. 4. 00:01

이상점이란?

이상점 찾기

q1 = airbnb_df['price'].quantile(0.25) # 1분위수
q3 = airbnb_df['price'].quantile(0.75) # 3분위수
iqr = q3 - q1 # iqr계산

# 이상점 판단 기준 찾기
lower_limit = q1 - 1.5*iqr
upper_limit = q3 + 1.5*iqr

# 가격이 낮은 이상점
airbnb_df[airbnb_df['price'] < lower_limit]

# 가격이 높은 이상점
airbnb_df[airbnb_df['price'] > upper_limit]

# 가격이 낮거나 높은 이상점 모두 확인
airbnb_df[(airbnb_df['price'] < lower_limit) | (airbnb_df['price'] > upper_limit)]

 

이상점 처리하기

1. 아무것도 하지 않음 -> 실제로 엄청 크거나 작은 값들일 수 있으며, 결과에 영향을 미치는 경우

2. 모든 데이터가 이상점 안에 있도록 데이터 기준을 맞춰줌 -> 이상점이 데이터에 미치는 극단적인 영향력을 줄일 수 있음

3. 이상점의 데이터를 삭제함 -> 오류때문에 발생했거나, 데이터를 삭제해도 큰 영향이 없을 경우 사용, 데이터의 전체 경향을 조금 더 쉽게 파악할 수 있음

# 정상 범위의 값만 가져오기
condition1 = airbnb_df['price'] >= lower_limit
condition2 = airbbnb_df['price'] <= upper_limit
airbnb_df[condition1 & condition2]

예제)

효준이는 스마트폰 구매 후보에서 가격이 너무 싸거나 비싼 건 제외하려고 합니다. cellphone_df에서 가격을 기준으로 이상점으로 볼 수 있는 데이터는 삭제해 주세요.

주의 사항: 채점을 위해 가장 마지막 줄에는 cellphone_df라고 입력해서 DataFrame을 출력해 주세요.

import pandas as pd

cellphone_df = pd.read_csv('data/cellphone.csv')

q1 = cellphone_df['price'].quantile(0.25)
q3 = cellphone_df['price'].quantile(0.75)
iqr = q3 - q1
lower_limit = q1 - 1.5*iqr
upper_limit = q3 + 1.5*iqr

condition1 = cellphone_df['price'] >= lower_limit
condition2 = cellphone_df['price'] <= upper_limit

cellphone_df = cellphone_df[condition1 & condition2]
cellphone_df

 

결과