본문 바로가기
자격증 공부/빅데이터분석기사

빅데이터 분석기사 실기 5회 기출

by 해모해모 2023. 6. 23.
728x90
반응형

# 작업형 1유형
# 가격 컬럼 중 종량제 봉투가 존재하면 값이 0
# 1. 용도 : 음식물쓰레기, 사용대상 : 가정용, 2L 가격의 평균을 소수점 버린 후 정수로 출력
cond1 = df['용도'] == '음식물쓰레기'
cond2 = df['사용대상'] == '가정용'
cond3 = df['2L가격'] != 0
df = df[cond1&cond2&cond3]
# print(df.head())

# print(df['2L가격'].mean())
print(round(df['2L가격'].mean())) 

# 정답 : 119
# 작업형 1유형
# BMI지수 = 몸무게(kg) / 키(m)의 제곱
# 2. 비만도가 정상에 속하는 인원수와 과체중에 속하는 인원수의 차이를 정수로 출력

df['BMI'] = (df['Weight']) / ((df['Height']*0.01)**2)
# print(df.head(10))

cond1 = (df['BMI'] >= 18.5) & (df['BMI'] < 23)
cond2 = (df['BMI'] >= 23) & (df['BMI'] < 25)

# print(len(df[cond1]))
# print(len(df[cond2]))

print(len(df[cond1])-len(df[cond2]))

# 정답 : 28
# 작업형 1유형
# 순 전입학생수 : 총 전입학생 수 - 총 전출학생 수
# 3. 순 전입학생이 가장 많은 학교의 전체 학생 수를 구하시오

df = df.groupby('학교').sum()
df['순 전입학생 수'] = df['총 전입학생'] - df['총 전출학생']
# df.head()

df = df.sort_values('순 전입학생 수', ascending = False)
df.head(10)

print(df['전체 학생 수'].iloc[0])

# 정답 : 566
# 작업형 2유형
# 중고차의 판매 가격을 예측
# EDA
# print(train.shape, test.shape)
# print(train.head()) 타겟 값 포함
# print(test.head())

# print(train.info()) # object형 있음
# print(train.describe())

# 결측치 확인
# print(train.isnull().sum()) # 결측치 X
# print(test.isnull().sum()) # 결측치 X

# 수치형만 사용
train = train.select_dtypes(exclude = 'object')
test = test.select_dtypes(exclude = 'object')
# print(train)
# print(test)

# 타겟 값 분리
target = train.pop('price')
# print(train.shape, test.shape, target.shape)

# 데이터 분리
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=2023)
# print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)

# 모델 학습 및 평가
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(random_state=2023)
model.fit(X_tr, y_tr)
# pred = model.predict(X_val)

# 분류 모델 평가
# sklearn.metrics import roc_auc_score
# roc_auc_score(y_val, pred)

# 회귀 모델 평가
# sklearn.metrics import mean_square_error, mean_absolute_error, r2_score
# mean_squared_error(y_val, pred)
# mean_absolute_error(y_val, pred)
# r2_score(y_val, pred)

# test 예측하기
pred = model.predict(test)

# csv 제출
result = pd.DataFrame({
    'pred':pred
})

# 결과 csv 파일 제출하기
result.to_csv("result.csv", index=False)

# 제출 잘 됐는지 확인
pd.read_csv('result.csv')
728x90
반응형

댓글