본문 바로가기

빅데이터 분석기사

[빅데이터 분석기사] 작업형 1유형(T1~2) - 이상치

#1. 데이터에서 IQR을 활용해 Fare컬럼의 이상치를 찾고, 이상치 데이터의 여성 수를 구하시오

# 라이브러리 및 데이터 불러오기
import pandas as pd
import numpy as np
df = pd.read_csv('../input/titanic/train.csv')
print(df)

# 간단한 탐색적 데이터 분석 (EDA)
# df.describe()
print(df.shape)
print(df.isnull().sum())
df.head()

# IQR 구하기
Q1 = np.percentile(df['Fare'], 25)    # Q1 = df[col].quantile(.25)
Q3 = np.percentile(df['Fare'], 75)    # Q3 = df[col].quantile(.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(len(outdata2[outdata2['Sex'] == 'female']))
print(sum(outdata2['Sex'] == 'female'))


# (추가) 이상치만 있는 데이터프레임 만들기
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
out = df[(df['Fare'] <= lower_bound) | (df['Fare'] >= upper_bound)]

1. pd.read_csv로 데이터를 불러옵니다.

2. shape 함수로 불러온 데이터의 행과 열 수를 확인하고 df.isnull().sum()로 각 열의 null값 수를 확인합니다.

3. np.percentile 함수로 IQR값과 Q1, Q3를 구합니다.

4. IQR값과 Q1, Q3로 이상치 데이터를 구합니다.

5. 이상치 데이터에서 여성 수를 구합니다.

 

+) 추가: 이상치만 있는 데이터 프레임 만들기

예시 문제에서는 outdata1 값이 0이라 outdata2값의 데이터만 사용했지만

둘다 존재하는 경우에는 두 조건으로 데이터프레임을 만든 뒤에 여성 수를 구해야 합니다.

 

 

 

 

#2. 주어진 데이터에서 이상치(소수점 나이)를 찾고 올림, 내림, 버림(절사)했을때 3가지 모두 이상치 'age' 평균을 구한 다음 모두 더하여 출력하시오

# 라이브러리 및 데이터 불러오기
import pandas as pd
import numpy as np

df = pd.read_csv('../input/bigdatacertificationkr/basic1.csv')
df.head()

# 소수점 데이터 찾기
df = df[(df['age']-np.floor(df['age']))!= 0]
df

# 이상치를 포함한 데이터 올림, 내림, 버림의 평균값 
# 올림
m_ceil = np.ceil(df['age']).mean()
# 내림
m_floor = np.floor(df['age']).mean()
# 버림
m_trunc = np.trunc(df['age']).mean()

m_ceil, m_floor, m_trunc

# 평균값 더한 다음 출력
print(m_ceil + m_floor + m_trunc)

1. pd.read_csv로 데이터를 불러옵니다.

2. np.floor 함수로 데이터에서 'age'의 열의 각 값에서 정수 부분을 빼고 소수점 부분만 남겨 필터링 합니다.

3. 올림, 내림, 버림 값의 평균을 구합니다.

4. 3번에서 구한 값들을 더해줍니다.

 

+) floor 함수(내림)와 trunc 함수(버림)의 차이

: 양수에서는 같지만 음수에서는 -5.5에서 내림을 하면 -6, 버림을 하면 -5가 됩니다.

 

 


참고링크

https://www.kaggle.com/code/agileteam/py-t1-1-iqr-expected-questions

 

[py] T1-1. 이상치를 찾아라(IQR활용) Expected Questions

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

https://www.kaggle.com/code/agileteam/py-t1-2-expected-questions

 

[py] T1-2. 이상치를 찾아라(소수점 나이) Expected Questions

Explore and run machine learning code with Kaggle Notebooks | Using data from Big Data Certification KR

www.kaggle.com

 

 

참고 링크에서 직접 문제를 풀어보실 수 있습니다.

 

 

감사합니다.