빅데이터분석기사 실기 제1유형
1유형은 기본적인 데이터 가공 및 분석에 관한 내용으로,
처리 이후 질문에 대한 답을 입력하는 단답형 유형이다.
df.loc을 활용하여 조건에 해당하는 부분을 구하는 것이 편하고, 코드가 깔끔하게 정리된다.
df.loc[ {행의 조건} , {열의 조건} ] = {값} 으로 코드를 작성하면 된다.
학습에 참고한 문제는 아래와 같다.
https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr
Big Data Certification KR
빅데이터 분석기사 실기 (Python, R tutorial code)
www.kaggle.com
중요한 문제를 세 가지정도 뽑아보자면 아래와 같다.
1. T1-1.Outlier(IQR)
IQR은 quantile을 이용하여 계산하며, Q1과 Q3 기준 중앙으로부터 IQR*1.5범위 밖에 있으면 이상치로 간주한다.
T1-1.Outlier(IQR) / #이상치 #IQR 문제는 아래처럼 구할 수 있으며, df.loc을 이용하여 간단하게 계산했다.
import pandas as pd
df = pd.read_csv('../input/titanic/train.csv')
# print(df.info())
# print(df.isnull().sum())
q1, q3 = df['Fare'].quantile(.25), df['Fare'].quantile(.75)
iqr = q3 - q1
q1_data = df.loc[(df['Fare'] < q1 - iqr*1.5) & (df['Sex']=='female')]
q3_data = df.loc[(df['Fare'] > q3 + iqr*1.5) & (df['Sex']=='female')]
print(len(q1_data), len(q3_data))
2. T1-3. Missing data
isnull, column drop, median, mean을 한 번에 이용하는 문제로, DataFrame 가공의 기본을 물어보는 문제이다.
T1-3. Missing data / #결측치 #삭제 #중앙 #평균 문제는 아래처럼 구할 수 있으며, 역시 df.loc의 조건문으로 해결했다.
df['col'].unique()와 df.columns를 이용하면 깔끔하게 for loop를 구성할 수 있고,
2유형에서도 자주 쓰이므로 알아두면 좋다.
import pandas as pd
df = pd.read_csv('../input/bigdatacertificationkr/basic1.csv')
del_list = []
for col in df.columns:
if sum(df[col].isnull())/len(df)>0.8:
del_list.append(col)
for col in del_list:
df = df.drop(columns=col)
print(df.info())
for col in df['city'].unique():
avg = df[df['city']==col]['f1'].median()
df.loc[(df['city']==col) & (df['f1'].isnull()), 'f1'] = avg
print(df['f1'].mean())
3. T1-9. 수치형 변수 표준화
이번엔 변수를 표준화 (정규화) 하는 문제로, 라이브러리 임포트만 잘 해주면 쉽게 해결할 수 있다.
T1-9. 수치형 변수 표준화는 아래처럼 해결했으며, fit_transform 내부의 df에서 대괄호를 두개 쓰는 것만 주의하면 된다.
만약 Z정규화가 아니라 min-max로 해야한다면 MinMaxScaler를 임포트하여 동일한 방식으로 사용하면 된다.
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.read_csv('/kaggle/input/bigdatacertificationkr/basic1.csv')
print(df.info())
scaler = StandardScaler()
df['f5'] = scaler.fit_transform(df[['f5']])
print(df['f5'].median())