## 연습문제
1. 연령별실업율_40-49세.csv 파일을 읽고
df1 = pd.read_csv('연령별실업율_40-49세.csv', encoding='cp949')
# 1) 각 연도별 실업율 평균 출력
df1.mean()
# 2) 각 연도별 상반기와 하반기 실업율 평균의 차이를 절댓값으로 나타낸 뒤 이 값이 가장 큰 연도를 출력
abs(1.2)
# 3) 2014년 -> 2014로 변경
# 4) 모든 컬럼명에서 '년' 제거
# 5) 실업율을 소수점 둘째자리까지 표현
[ 내 답변 ]
1. 연령별실업율_40-49세.csv 파일을 읽고
df1 = pd.read_csv('연령별실업율_40-49세.csv', encoding='cp949')
# 1) 각 연도별 실업율 평균 출력
df1.mean()
df2 = df1.iloc[:, 1:]
df2.mean()
df2.mean()
Out [54]:
2014년 3.500000
2015년 3.000000
2016년 2.000000
2017년 2.191667
2018년 2.316667
dtype: float64
# 2) 각 연도별 상반기와 하반기 실업율 평균의 차이를 절댓값으로 나타낸 뒤 이 값이 가장 큰 연도를 출력
abs(1.2)
상반기 = df1.loc[df1['월'] <= 6].iloc[:, 1:]
하반기 = df1.loc[df1['월'] > 7].iloc[:, 1:]
abstwo = abs(상반기.mean() - 하반기.mean())
abstwo.max()
abstwo[abstwo == abstwo.max()]
abstwo[abstwo == abstwo.max()]
Out [76]:
2015년 1.13
dtype: float64
# 3) 2014년 -> 2014로 변경
df1.rename({'2014년':'2014'}, axis=1)
df1.rename({'2014년':'2014'}, axis=1)
Out [83]:
월 2014 2015년 2016년 2017년 2018년
0 1 4.0 4.3 2.4 2.0 2.2
1 2 4.5 4.5 2.5 2.1 2.6
2 3 3.9 4.1 2.5 2.2 2.8
3 4 3.6 3.3 2.1 2.1 2.3
4 5 3.4 2.7 2.0 2.2 2.2
5 6 3.3 2.4 1.8 2.2 2.0
6 7 3.1 2.6 1.8 2.2 2.3
7 8 3.2 2.9 2.1 2.5 2.6
8 9 3.2 2.5 1.8 2.2 2.3
9 10 3.1 2.3 1.7 2.2 2.1
10 11 3.2 2.2 1.6 2.2 2.2
11 12 3.5 2.2 1.7 2.2 2.2
# 4) 모든 컬럼명에서 '년' 제거
df1.columns[:]
f1 = lambda x : x.replace('년', '')
newindex = df1.columns[:].map(f1)
df1.columns = df1.columns[:].map(f1)
df1
df1
Out [111]:
월 2014 2015 2016 2017 2018
0 1 4.0 4.3 2.4 2.0 2.2
1 2 4.5 4.5 2.5 2.1 2.6
2 3 3.9 4.1 2.5 2.2 2.8
3 4 3.6 3.3 2.1 2.1 2.3
4 5 3.4 2.7 2.0 2.2 2.2
5 6 3.3 2.4 1.8 2.2 2.0
6 7 3.1 2.6 1.8 2.2 2.3
7 8 3.2 2.9 2.1 2.5 2.6
8 9 3.2 2.5 1.8 2.2 2.3
9 10 3.1 2.3 1.7 2.2 2.1
10 11 3.2 2.2 1.6 2.2 2.2
11 12 3.5 2.2 1.7 2.2 2.2
# 5) 실업율을 소수점 둘째자리까지 표현
f2 = lambda x : '%.2f' % x
df1.applymap(f2)
df1.applymap(f2)
<stdin>:1: FutureWarning: DataFrame.applymap has been deprecated. Use DataFrame.map instead.
Out [119]:
월 2014 2015 2016 2017 2018
0 1.00 4.00 4.30 2.40 2.00 2.20
1 2.00 4.50 4.50 2.50 2.10 2.60
2 3.00 3.90 4.10 2.50 2.20 2.80
3 4.00 3.60 3.30 2.10 2.10 2.30
4 5.00 3.40 2.70 2.00 2.20 2.20
5 6.00 3.30 2.40 1.80 2.20 2.00
6 7.00 3.10 2.60 1.80 2.20 2.30
7 8.00 3.20 2.90 2.10 2.50 2.60
8 9.00 3.20 2.50 1.80 2.20 2.30
9 10.00 3.10 2.30 1.70 2.20 2.10
10 11.00 3.20 2.20 1.60 2.20 2.20
11 12.00 3.50 2.20 1.70 2.20 2.20
[ 문제풀이 ]
1) 각 연도별 실업율 평균 출력
result1 = df1.iloc[:, 1:].mean()
print(result1)
2) 각 연도별 상반기와 하반기 실업율 평균의 차이를 절댓값으로 나타낸 뒤 이 값이 가장 큰 연도를 출력
vmean1 = df1.iloc[:6, 1:].mean()
vmean2 = df1.iloc[6:, 1:].mean()
print(abs(vmean1 - vmean2))
print(2015)
3) 2014년 -> 2014로 변경
df1.rename({'2014년' : '2014'}, axis = 1)
4) 모든 컬럼명에서 '년' 제거
f1 = lambda x : x.replace('년','')
df1.columns = df1.columns.map(f1)
df1
5) 실업율을 소숫점 둘째자리까지 표현
f2 = lambda x : '%.2f'%x
df1.iloc[:,1:] = df1.iloc[:,1:].applymap(f2)
# 2. student.csv 파일을 읽고
pd.set_option('display.max_columns', None)
std = pd.read_csv('student.csv', encoding = 'cp949')
1) 주민번호 뒷자리 마스킹
std.dtypes
f3 = lambda x : str(x).replace(str(x)[6:], 'XXXXXXX')
std['JUMIN'].map(f3)
2) id의 왼쪽에 '*'을 삽입하여 모두 10자리로 생성
'75tur'.rjust(10,'*')
f4 = lambda x : x.rjust(10, '*')
std['ID'].map(f4)
'아이티윌_데이터 분석 55기 > 문제풀이_Python' 카테고리의 다른 글
| #7-2. 7일차 퀴즈에 대한 문제풀이 (0) | 2026.05.20 |
|---|---|
| #6-2. 6일차 퀴즈에 대한 문제풀이 (0) | 2026.05.18 |
| #4-2. 4일차 퀴즈에 대한 문제풀이 (0) | 2026.05.14 |
| #3-2. 3일차 퀴즈에 대한 문제풀이 (+ 다양한 print 방법) (0) | 2026.05.13 |
| #1-2. 1일차 퀴즈에 대한 문제풀이 (0) | 2026.05.11 |