728x90
728x90
빅데이터분석기사 실기 문제는 3가지 유형이 있습니다.
먼저, 제1유형은 데이터 전처리에 대한 문제이며, 총 3문제가 출제됩니다.
주어진 데이터셋에 대해 결측치 처리, 이상치 제거, 컬럼 생성, 데이터 통합 등에 대한 문제가 출제되며,
코드 제출이 아닌 결과 데이터 제출이므로 작업의 정확성이 중요합니다.
대부분 pandas 라이브러리를 사용하여 처리하게 됩니다. 기초부터 탄탄히 공부해 볼까요?
| 구분 | 문항 수 | 답안 제출 | 점수 |
| 제1유형 | 3문항 | 전처리 결과 제출 | 30점 |
| 제2유형 | 1문항 | CSV 코드 제출 | 40점 |
| 제3유형 | 2문항 | 답안 제출 | 30점 |
| 합계 | 6문항 | - | 100점 |
1. 판다스/데이터 불러오기
import pandas as pd # 판다스 불러오기
data = {
"메뉴": ['김밥', '라면', '떡볶이', '튀김', '순대'],
"가격": [3000, 4000, 6000, 5000, 3500],
"판매량": [50, 42, 38, 25, 16],
}
data = pd.DataFrame(data)
data.to_csv('data.csv', index=False)
pd.read_csv('data.csv') # 데이터 불러오기

2. 일부 데이터만(앞/뒤 줄) 확인하기
df = pd.read_csv('data.csv')
print( df.head(2) ) # 앞 2줄만 확인
print( df.tail(2) ) # 뒤 2줄만 확인
메뉴 가격 판매량
0 김밥 3000 50
1 라면 4000 42
메뉴 가격 판매량
3 튀김 5000 25
4 순대 3500 16
3. 시리즈/데이터프레임 만들기
# 시리즈 만들기
menu = pd.Series( ['김밥', '라면', '떡볶이'] )
price = pd.Series( [3000, 4000, 6000] )
# 데이터프레임 만들기
pd.DataFrame( {
"menu" : menu,
"price" : price
})

4. 데이터 통계 정보
print( df.shape ) # 데이터프레임 크기(행, 컬럼)
print( df.info() ) # 컬럼 정보
print( df.describe() ) # 기초 통계 정보(수치형)
print( df.describe(include='all') ) # 기초 통계 정보(모두)
#print( df.corr() ) # 상관관계
(5, 3)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 메뉴 5 non-null object
1 가격 5 non-null int64
2 판매량 5 non-null int64
dtypes: int64(2), object(1)
memory usage: 252.0+ bytes
None
가격 판매량
count 5.000000 5.000000
mean 4300.000000 34.200000
std 1204.159458 13.608821
min 3000.000000 16.000000
25% 3500.000000 25.000000
50% 4000.000000 38.000000
75% 5000.000000 42.000000
max 6000.000000 50.000000
메뉴 가격 판매량
count 5 5.000000 5.000000
unique 5 NaN NaN
top 김밥 NaN NaN
freq 1 NaN NaN
mean NaN 4300.000000 34.200000
std NaN 1204.159458 13.608821
min NaN 3000.000000 16.000000
25% NaN 3500.000000 25.000000
50% NaN 4000.000000 38.000000
75% NaN 5000.000000 42.000000
max NaN 6000.000000 50.000000
5. 중복값 있는 데이터 생성
ring = {
"color": ['Gold', 'Siver', 'Siver', 'Gold', 'Gold', 'Gold'],
"size": ['S', 'M', 'M', 'S', 'L', 'S'],
"price": [3000, 4000, 2000, 5000, 5000, 3000],
"discount": ['0.3', '0.5', '0.3', '0.2', '0.5', '0.4']
}
ring = pd.DataFrame(ring)
print( ring.nunique() ) # 항목 종류 수
print( ring['size'].unique() ) # 항목 종류
print( ring['color'].value_counts() ) # 항목별 개수
color 2
size 3
price 4
discount 4
dtype: int64
['S' 'M' 'L']
color
Gold 4
Siver 2
Name: count, dtype: int64
6. 자료형 변환 (object → float)
ring['discount'] = ring['discount'].astype('float')
ring.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 color 6 non-null object
1 size 6 non-null object
2 price 6 non-null int64
3 discount 6 non-null float64
dtypes: float64(1), int64(1), object(2)
memory usage: 320.0+ bytes
7. 데이터 추가 및 삭제
1) 새로운 컬럼 추가
ring['new'] = ring['price'] * (1 - ring['discount'])
ring

2) 결측값으로 추가
import numpy as np
ring['review'] = np.nan
ring

3) 컬럼 삭제
ring = ring.drop('review', axis=1)
ring

4) 데이터 삭제
ring = ring.drop(1, axis=0)
ring

8. CSV로 저장/불러오기
# csv로 저장하기
ring.to_csv('ring.csv', index=False)
# csv로 불러오기
new_ring = pd.read_csv('ring.csv')
9. 인덱싱 및 슬라이싱
1) 인덱싱
import pandas as pd
cafe = {
"메뉴":['아메리카노','카페라떼','카페모카', '바닐라라떼', '녹차', '초코라떼', '바닐라콜드브루'],
"가격":[4100, 4600, 4600, 5100, 4100, 5000, 5100],
"할인율":[0.5, 0.1, 0.2, 0.3, 0, 0, 0],
"칼로리":[10, 180, 420, 320, 20, 500, 400],
}
cafe = pd.DataFrame(cafe)
cafe.to_csv('cafe.csv', index=False)
cafe = pd.read_csv('cafe.csv')
# 인덱싱
cafe.loc[0] # loc[인덱스 명]
cafe.iloc[0] # iloc[인덱스 번호]

2) 슬라이싱
# 슬라이싱
cafe.loc[:,'가격':'할인율'] # loc[인덱스 명, 컬럼 명], 마지막 포함 함
cafe.iloc[:,1:3] # iloc[인덱스 번호, 컬럼 번호], 마지막 포함 안함

3) 인덱싱/슬라이싱
print( cafe.loc[1:2, ['메뉴', '칼로리']] )
print( cafe.iloc[1:3, [0, 3]])
메뉴 칼로리
1 카페라떼 180
2 카페모카 420
메뉴 칼로리
1 카페라떼 180
2 카페모카 420
10. 데이터 추가
import numpy as np
cafe['원두'] = np.nan
cafe.loc[0, '원두'] = '콜롬비아'
cafe.loc['시즌'] = ['시즌메뉴', 6000, 0, 500, '한국'] # 리스트
cafe.loc[7] = {'메뉴':'에스프레소', '가격':2000, '칼로리':10} # 딕셔너리
cafe

11. 데이터 정렬
print( cafe.sort_index(ascending=False) ) # 내림차순
print( cafe.sort_values(['가격', '메뉴'], ascending=[False, True]) )
print( cafe.reset_index(drop=True) ) # 인덱스를 컬럼으로 지정하지 않고, 오름차순

728x90
728x90
'빅데이터 분석기사 > 실기 요약' 카테고리의 다른 글
| [빅데이터분석기사/실기] 제1유형. 판다스 실습 - 문자열 (0) | 2025.06.06 |
|---|---|
| [빅데이터분석기사/실기] 제1유형. 판다스 실습 - 날짜 변환 (0) | 2025.06.06 |
| [빅데이터분석기사/실기] 제1유형. 판다스 실습 - 조건필터, 결측치 처리, 통계분석, 데이터 개수확인 (0) | 2025.05.26 |
| [빅데이터분석기사/실기] 0. 파이썬 기초 (1) | 2025.05.24 |
| [빅데이터분석기사/실기] 실기 개요 및 시험 환경 체험 (0) | 2024.11.26 |