subindev 님의 블로그

[실기] 빅데이터 분석기사 python - pandas 100제 문제 본문

데이터 관련/빅데이터 분석기사

[실기] 빅데이터 분석기사 python - pandas 100제 문제

subindev 2025. 6. 24. 18:45

출처: 유튜브 - 데이터 분석 캠퍼스


46번:  .apply(lambda x:)  re 정규표현식

숫자 0~3을 *로 마스킹하기

import pandas as pd
import re

emp = pd.read_csv("content/emp.csv")

# sal 컬럼의 숫자 0~3을 *로 대체
emp['sal_star'] = emp.sal.astype(str).apply(lambda x: re.sub('[0-3]', '*', x))
emp[['ename','sal_star']]

 

73번:  pd.qcut 으로 등급 나누기

나이를 5등급으로 나누어 ‘등급’ 컬럼 만들기

emp20 = pd.read_csv("content/emp20.csv", encoding="euckr")

# 나이 기준으로 내림차순 순위 매기기
emp20['순위'] = emp20['age'].rank(method="dense", ascending=False).astype(int)

# 5등급으로 등급 나누기
emp20['등급'] = pd.qcut(emp20.순위, q=5, labels=range(1, 6))
emp20[['ename','age','등급']].sort_values(by='등급')

 

 

75번: 결측치 처리 후  rank

Age 결측치를 평균으로 채우고 나이순 순위 부여

tit = pd.read_csv('content/train.csv')

# Age 결측치 평균으로 대체
tit['Age'] = tit['Age'].fillna(tit['Age'].mean())

# Age 기준 내림차순 순위
tit['순위'] = tit['Age'].rank(ascending=False).astype(int)

tit[['Age','순위']].sort_values(by='순위')

 

 

78번:  shift(-1) 로 이전 행 출력

이름, 입사일, 다음 행의 입사일(shift 사용)

emp = pd.read_csv("content/emp.csv")

# 다음 행의 hiredate 값을 가져오기
emp['lag_hiredate'] = emp['hiredate'].shift(-1).fillna('x')
emp[['ename','hiredate','lag_hiredate']]

 

 

80번:  pivot_table 로 집계

직업 + 부서번호 기준 월급 합계 피벗

emp = pd.read_csv("content/emp.csv")

# 직업별, 부서별 월급 합계 출력
emp.pivot_table(columns='deptno', index='job', values='sal', aggfunc='sum')

 

 

 

82번: 피벗 테이블에서  aggfunc='count'

주소 앞 3자리로 인원수 카운트 (가로 형태)

emp = pd.read_csv("content/emp20.csv", encoding="euckr")

# 주소 앞 3자리 추출
emp['address_front_3'] = emp.address.str.slice(0, 3)

# 주소 앞 3자리별 인원 수 계산
emp.pivot_table(columns='address_front_3', values='empno', aggfunc='count')

 

 

96번:  intersect & minus

두 데이터프레임의 차집합 구하기

emp = pd.read_csv("content/emp.csv")
emp_old_backup = pd.read_csv("content/emp_old_backup.csv")

x1 = emp[['ename','sal','deptno']]
x2 = emp_old_backup[['ename','sal','deptno']]

# x1에만 있고 x2에는 없는 데이터 출력 (차집합)
x1[~x1.ename.isin(x2.ename)]

 

 

 

100번: 사라진 편의점 수

2017년에는 있었지만 2022년에 없는 편의점 수 구하기

# 조건에 맞는 편의점만 필터링
x1 = market_2017[market_2017['상권업종소분류명'] == '편의점'][['상가업소번호']]
x2 = market_2022[market_2022['상권업종소분류명'] == '편의점'][['상가업소번호']]

# x1에는 있고 x2에는 없는 상가업소번호만 필터링
x3 = x1[~x1.상가업소번호.isin(x2.상가업소번호)]

# 사라진 편의점 수
x3[['상가업소번호']].count()

 


100제 중 헷갈리는 문제 복습 및 정리