다시 풀어볼 문제 목록
- 기출9회 작업형1 모든 문제
- 기출8회 작업형1의 3
- 기출6회 작업형3
다시 공부해야할 문제 목록
- 오즈비 관련 문제
- 표 행과 열 바꿔서 푸는 기출9회 작업형1같은 문제들
9회
작업형1

1. df에 총대출액 컬럼을 하나 만든 뒤 신용대출과 담보대출의 합을 넣음
2. 지역코드랑 성별으로 groupby하고 총 대출액 컬럼에 sum()
3. 성별 간 총대출액 차이가 가장 큰 지역코드를 찾으려면,
지역코드와 성별별로 총대출액의 합계를 계산한 테이블에 unstack() 함수를 일단 씌워야한다.

이건 unstack() 함수 씌우기 전, 인덱스가 두개인 모습
그리고 언스택 함수를 씌우면

이렇게 성별이 컬럼으로 펼쳐지게 된다.
unstack() 함수를 이용해서 현재는 인덱스 자리에 있는 것을 위에 컬럼으로 펼칠 수 있고, 여러번 언스택함에 따라서 결과가 달라지니까 작동 원리 몰라도 계속 해보면서 내가 원하는 모양 찾으면 된다.

연도를 기준으로, 발생건수/검거건수 숫자를 갖고 표를 만들어야 하는 문제이다.
아까 문제1도 지역번호를 기준으로, 남/녀 숫자를 갖고 표를 만드는 문제였다.
이런 경우 발생건수, 검거건수 따로 2개의 데이터프레임을 만들어주면 편하다.

이렇게 발생건수에 대해서 데이터프레임을 만들어주고 강력범죄~기타범죄 중 가장 큰 값을 뽑아내야한다.
원래 우리가 사용하는 max()함수는 한 컬럼을 선택해서 보통 많이 해줬다. df['x'].max()
하지만 이번엔 가로줄중에서 가장 큰 값을 선택해야하는 상황이기에, axis=1을 넣어줘야한다.

근속연수의 결측치를 동일한 부서 및 성과등급에 해당하는 직원들의 평균 근속연수로 대체해야하는데, 여기서의 문제점은 저 두개에 대해서 groupby를 해서 평균값을 구하고 보면 fillna에 넣어주기에는 데이터의 생김새가 전혀 달라진다는거다.

이렇게 되어버린다. 우리는 이런 경우 항시 transform()함수를 통해 그 컬럼의 개수만큼되는 값으로 채워줄 수가 있다!!!
제발 groupby해서 결측치 채울땐 transfrom('mean') 함수를 기억하자

작업형3
from sklearn.metrics import root_mean_squared_error
mse = root_mean_squared_error(test['design'], pred)
rmse 함수가 새버전에 추가되었기에 sqrt함수를 씌워주거나 옵션지정할 필요없이 저 함수를 갖다쓰면 된다.
8회
작업형1
문제3
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df['co'] = scaler.fit_transform(df[['co']])
df['nmhc'] = scaler.fit_transform(df[['nmhc']])
문제에서 min-max 스케일링을 요구했다.
min-max스케일링: (X - min_X) / (max_X - min_X)
이 식을 못외웠다면 위와 같이 sklearn의 preprocessing(전처리) 안에 있는 MinMaxScaler을 가져와서 쓰면 된다.
여기서 스케일러는 무조건
이렇게 객체를 생성해서 써야하고
사이킷런 스케일러는 2차원형태의 데이터만 받도록 되어있기에 대괄호 두번 써서 데이터프레임형태로 전달해야한다!
7회
작업형1
문제1
결측치가 있는 행을 제거한 후, 학생이 가장 많이 수강한 과목(id_assessment)을 찾고, 해당 과목 점수(score)를 표준화(스탠다스 스케일) 한 뒤에 표준화된 가장 큰 값을 구하시오. (반올림하여 소수 셋째자리까지 계산)
스케일링할 때 주의해야할 점: 스케일링할 때는 어떤 집단을 표준화할 것인지를 잘 생각해야한다.
전체에 대해서 표준화하는 것과 부분부분들에 대해서 표준화하는 것 다 답이 다르게 나타날 것이다. 이건 식을 생각해보면 너무 당연한거다... 이 문제는 조건에 맞는 녀석들을 표준화한 후 최대값을 구하는 문제이다.
작업형3

이 모델 summary에서 외워야할 녀석들이 몇몇 있다.
Log-Likelihood: 잔차 이탈도
LL-Null: Null 로그 우도
coef: 회귀 계수
P>|z|: p-value, 유의확률
문제 1-3에서 모델로 예측값 구한 뒤 오류율을 구하라는 문제가 나오는데,
오류율 = 1 - 정확도
이기에 accuracy_score을 구해서 1에서 빼주면 구할 수 있다.
6회
작업형1
total_seconds 쓸때 제발제발 앞에 dt붙여!!!
시리즈.dt.total_seconds() 제발!
작업형3
문제1
카이제곱 검정을 하는 두가지 경우가
1. 적합도 검정
내가 조사한 데이터가 기존에 알려진 확률분포에 잘 적합하는지
2. 독립성 검정(동질성 검정)
변수간 얼마나 연관이 있는지
Q1. 항암약 위약을 투여 받은 환자의 부작용은 감기약 위약을 투여 받은 환자의 부작용 분포와 차이가 있는가?
이 문제를 보면 딱봐도 카이제곱검정의 적합도 검정 문제구나 알아야한다.
먼저 적합도 검정 프로세스는 이러하다.
1. 로우데이터로 주어져있다면, 일단 각 범주가 실제로 몇개씩 나왔는지 세어줘야 한다.
import pandas as pd
df = pd.DataFrame({ "항암약":[4,4,3,4,1,4,1,4,1,4,4,2,1,4,2,3,2,4,4,4] })
# 1: '아픔', 2: '조금 아픔', 3: '속쓰림', 4: '무증상'
# 일단 이 raw데이터를 갖고 각 범주가 실제로 몇개씩 나왔는지 세어줘야함
df.value_counts().sort_index()
이런식이다. value_counts()로 값을 세어주고 sort_index()를 해줘야 비교할 데이터와 표 순서가 같아지기에 첨부터 정렬을 해주는게 편하다.
2. 원래 알려진 비율대로라면 기대되는 기대빈도를 계산한다.
이렇게 알려진 비율이 있으면
total = df['항암약'].count()
ex_ratio = [0.1, 0.05, 0.15, 0,7]
expected = [total * ratio for ratio in ex_ratio]
이렇게 기대빈도를 구해준다. 막줄처럼 리스트안에 for문 바로 적어주면 한줄에 끝나지만 도저히 기억안나면 하나하나 곱해주거나 여러줄에 for문 돌려서 리스트에 넣어줘도 된다.
그리고 싸이파이에 있는 chisquare() 돌려주면 된다.
from scipy.stats import chisquare
chisquare(f_obs=observed, f_exp=expected)
+ 참고로 카이제곱 사용하는게 1. 적합성 검사, 2. 독립성/동질성 검사라고 했는데 둘다 카이제곱을 쓰는건 맞지만 쓰는 함수가 다르다. 이번 문제처럼 적합성 검사의 경우에는 chisquare을 쓰지만 두 변수의 독립성, 동질성 검사에서 쓰는 카이제곱함수는 chi2_contingency()이다.
문제2
데이터에서 'solar'와 'o3' 값을 고정한 상태에서, 'wind'의 세기가 증가함에 따라 'temperature'가 감소하는지를 검증하기 위해 다중 선형 회귀 분석을 수행하고, 이 때'wind'의 회귀 계수에 대한 p-value 값을 구하시오. (유의수준: 0.05)
고정한 상태에서 구하라길래 쫄았지만 그냥 서로간의 상호작용효과를 고려하지 않는다는 뜻이다. wind의 세기가 증가해서 temperature값이 달라지는건 solar와 o3값이 함께 변했기 때문이 아니라는 것이기 때문. 그래서 그냥 +로 묶어서 ols돌려서 풀면 되는 문제다.
데이터프레임 만들어서 예측하는 것까진 무난하게 할 수 있다. 다만 신뢰구간을 구하는게 문젠데, 이럴 땐 제발
get_prediction() 이라는 함수를 사용해야한다. 그리고 summary_frame()이라는 함수까지 세트로 알아둬야한다. 이 두개를 모르고 못쓰면 그냥 틀려야 하는 문제다.
# solar:100, wind:5, o3:30일 때 예측값과 그에 대한 95% 신뢰구간을 구하시오.
new_data = pd.DataFrame({'solar': [100], 'wind': [5], 'o3': [30]})
pred = model.get_prediction(new_data)
pred.summary_frame(alpha=0.05)

mean값이 예측값이고 mean_ci가 신뢰구간 하한 상한, obs_ci가 예측구간 하한 상한이다.
'빅데이터분석기사' 카테고리의 다른 글
| 빅분기 실기 작업형3 정리 (0) | 2026.06.18 |
|---|---|
| 작업형3 추가적으로 (0) | 2026.06.14 |
| 작업형2 문풀 (0) | 2026.06.14 |
| 작업형 제1유형 헷갈리는 내용 정리 (0) | 2026.06.10 |
| 빅분기 실기 작업형2 정리 (0) | 2026.05.17 |