실기 실무 1강. 작업형 제1유형 전처리
실기 1유형에서 떨어지는 사람의 대부분은 판다스를 몰라서가 아니라, 답을 출력하지 않아서입니다.
풀고 시작
시험장에서 무엇을 하는가
실기는 필기와 성격이 완전히 다릅니다. 지식을 고르는 것이 아니라 주어진 환경에서 코드를 돌려 답을 내는 시험입니다. 파이썬과 R 중 하나를 고르고, 인터넷 검색은 안 되며, 화면 안의 도움말만 쓸 수 있습니다.
작업형 제1유형은 데이터 전처리와 집계를 시켜 놓고 숫자 하나를 답하게 하는 유형입니다. 여기서 가장 흔한 실수가 계산은 다 해 놓고 출력을 빠뜨리는 것입니다. 노트북 환경에 익숙한 분들이 마지막 줄에 변수 이름만 적어 두는 습관 때문에 그렇습니다. 답은 반드시 print로 찍어야 합니다. 그리고 정수로 답하라고 하면 정수로, 반올림하라고 하면 지시한 자리까지 맞춰야 합니다.
시험 구성은 회차에 따라 조정되어 왔습니다. 현재는 제1유형이 세 문항, 제2유형이 한 문항, 제3유형이 두 문항이고 100점 만점에 60점 이상이면 합격입니다. 다만 이 구성과 배점은 바뀔 수 있으니 응시 전에 시행기관 공지를 반드시 확인하세요.
손이 기억해야 하는 것들
시험장에서 검색이 안 되므로, 아래 정도는 손이 먼저 움직여야 합니다.
import pandas as pd
df = pd.read_csv("data.csv")
df.head() # 앞부분 훑기
df.info() # 자료형과 결측 확인
df.describe() # 수치형 요약통계
df.isnull().sum() # 열별 결측 개수
정렬과 조건 걸기, 그리고 집계가 1유형의 뼈대입니다.
# 조건에 맞는 행만
sub = df[(df["age"] >= 30) & (df["city"] == "서울")]
# 정렬 후 상위 10개
top = df.sort_values("price", ascending=False).head(10)
# 그룹별 집계
g = df.groupby("city")["price"].mean()
# 결측 대체와 중복 제거
df["age"] = df["age"].fillna(df["age"].median())
df = df.drop_duplicates()
조건 두 개를 묶을 때 파이썬의 and가 아니라 앰퍼샌드를 쓰고 각 조건을 괄호로 감싸야 한다는 점, 여기서 많이 틀립니다.
자주 나오는 계산 몇 가지
이상값 개수 세기는 2과목 2강의 IQR 규칙을 그대로 코드로 옮기면 됩니다.
q1 = df["x"].quantile(0.25)
q3 = df["x"].quantile(0.75)
iqr = q3 - q1
lower, upper = q1 - 1.5 * iqr, q3 + 1.5 * iqr
print(len(df[(df["x"] < lower) | (df["x"] > upper)]))
대체 전후를 비교하는 문제도 단골입니다. 결측을 평균으로 채우기 전과 후의 표준편차 차이를 구하라는 식이죠. 2과목에서 배운 대로 평균 대체는 분산을 줄이므로 표준편차는 작아집니다. 계산 결과가 그 방향인지 보면 실수를 잡아낼 수 있습니다.
상위 몇 퍼센트의 값을 구할 때는 quantile을, 범주별 최빈값은 value_counts를 씁니다. 조건에 맞는 행의 개수는 len으로 세거나 조건 시리즈에 sum을 걸면 됩니다. 참이 1로 더해지니까요.
시간을 아끼는 습관
첫째, 문제를 끝까지 읽고 무엇을 출력해야 하는지부터 확정하세요. 평균인지 합계인지, 소수 몇째 자리인지, 정수인지를 놓치면 계산이 맞아도 0점입니다.
둘째, 중간 결과를 자주 찍어 보세요. 검색이 막힌 환경에서는 눈으로 확인하는 것이 가장 빠른 디버깅입니다.
셋째, 막히면 넘어가세요. 1유형 세 문항은 배점이 같습니다. 한 문항에 매달리다가 배점이 큰 2유형에 손도 못 대는 것이 최악의 시나리오입니다.
인출 문제
이전: 4과목 5강 분석 결과 활용과 모니터링 · 다음: 2강 작업형 제2유형 예측 모형