데이터에서 IQR을 활용해 Fare컬럼의 이상치를 찾고, 이상치 데이터의 여성 수를 구하시오
강의 영상 : https://youtu.be/ipBW5D_UJEo
데이터 위치 "../input/titanic/train.csv"
이상치(Outlier)란,
의도하지 않게 잘못 입력한 경우나 의도하지 않게 입력 되었으나 분석 목적에 부합하지 않아 제거해야 하는 경우
의도하지 않은 현상이지만 분석에 포함해야 하는 경우
의도된 이상값(Fraud, 불량)인 경우
기출 표현 : 데이터 정제 과정에서 처리해야 하는 값으로, 데이터가 정상의 범주에서 벗어난 값을 의미
IQR = Q3 - Q1
[이상치 범위]
Q3 + ( 1.5 * IQR )보다 큰 값
Q1 - ( 1.5 * IQR )보다 작은 값
📍최종 나의 코드
# 라이브러리 및 데이터 불러오기
import pandas as pd
df=pd.read_csv("../input/titanic/train.csv")
df.head()
# 간단한 탐색적 데이터 분석 (EDA)
df['Fare'].describe()
# IQR 구하기
upper = df['Fare'].quantile(0.75)
bottom = df['Fare'].quantile(0.25)
iqr = upper-bottom
print(iqr)
top = upper + 1.5 * iqr
bot = bottom - 1.5 * iqr
print(top, bot)
# 이상치 데이터 구하기
# 이상인가, 초과인가 헷갈린다.
df[(df['Fare']>=top)|(df['Fare']<=bot)]['Fare']
# 이상치 데이터에서 여성 수 구하기, 출력하기 print()
idx = df[(df['Fare']>=top)|(df['Fare']<=bot)]['Fare'].index
temp = df.iloc[idx]
print(len(temp[temp['Sex']=='female']))
📍해답
# 라이브러리 및 데이터 불러오기
import pandas as pd
import numpy as np
df = pd.read_csv('../input/titanic/train.csv')
# 간단한 탐색적 데이터 분석 (EDA)
print(df.shape)
print(df.isnull().sum())
df.head()
# IQR 구하기
Q1 = df['Fare'].quantile(.25)
Q3 = df['Fare'].quantile(.75)
# numpy 활용시
# Q1 = np.percentile(df['Fare'], 25)
# Q3 = np.percentile(df['Fare'], 75)
IQR = Q3 - Q1
Q1 - 1.5 * IQR, Q3 + 1.5 * IQR
# 이상치 데이터 구하기
outdata1 = df[df['Fare']<(Q1 - 1.5 * IQR)]
outdata2 = df[df['Fare']>(Q3 + 1.5 * IQR)]
len(outdata1), len(outdata2)
# 이상치 데이터에서 여성 수 구하기, 출력하기 print()
print(sum(outdata2['Sex'] == 'female'))
📍해답이랑 비교했을 때 아쉬웠던 점
- 변수명 지정에 1사분위수는 Q1, 3사분위수는 Q3으로 지정할걸
- 이상치 구할 때, 이상/이하가 아니라 초과/미만이더라
'📝 자격증 > 빅데이터 분석기사' 카테고리의 다른 글
[빅분기 실기 준비] 데이터마님 1유형 유튜브 인기동영상 데이터 (0) | 2024.07.06 |
---|---|
[빅분기 실기 준비] T1 2회 기출유형 Python (결측치 → 중앙값으로 대체, 70% 데이터 추출) (0) | 2024.06.09 |
제8회 빅데이터분석기사-필기 합격 ❤️ (0) | 2024.05.12 |
[4과목] 빅데이터 결과 해석 필기+기출정리 (0) | 2024.04.11 |
[3과목] 빅데이터 모델링 필기+기출정리 (0) | 2024.04.11 |