#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
참고 링크에서 직접 문제를 풀어보실 수 있습니다.
감사합니다.
'빅데이터 분석기사' 카테고리의 다른 글
[빅데이터 분석기사] 작업형 1유형(T12~14) - 정렬, 상관계수, 다중인덱스 (0) | 2024.06.14 |
---|---|
[빅데이터 분석기사] 작업형 1유형(T9~11) - 표준화, 데이터 변환 (0) | 2024.06.14 |
[빅데이터 분석기사] 작업형 1유형(T6~8) - 값 대체, 누적합 (2) | 2024.06.13 |
[빅데이터 분석기사] 작업형 1유형(T3~5) - 결측치, 왜도와 첨도, 표준편차 (2) | 2024.06.13 |
[빅데이터 분석기사] 작업형 1유형_test (0) | 2024.06.11 |