4 분 소요

1. 인구 피라미드

남자 데이터 정의

import pandas as pd
file_name = '201201_201201_연령별인구현황_월간.xlsx'
df_m = pd.read_excel(file_name, skiprows=3, index_col='행정기관', usecols='B,E:Y')
df_m.head(3)
C:\Users\Chae\anaconda3\lib\site-packages\openpyxl\styles\stylesheet.py:226: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")
0~4세 5~9세 10~14세 15~19세 20~24세 25~29세 30~34세 35~39세 40~44세 45~49세 ... 55~59세 60~64세 65~69세 70~74세 75~79세 80~84세 85~89세 90~94세 95~99세 100세 이상
행정기관
전국 1,196,298 1,215,642 1,627,682 1,878,394 1,692,322 1,798,832 2,058,717 2,151,718 2,346,348 2,171,235 ... 1,608,133 1,139,681 885,678 719,811 437,707 194,827 77,608 22,964 4,766 2,691
서울특별시 216,843 212,597 282,790 344,798 337,696 421,899 475,109 452,897 463,064 412,326 ... 334,448 240,777 190,839 139,263 74,020 32,185 13,282 4,663 1,203 907
부산광역시 67,475 69,137 99,796 128,970 123,263 126,669 138,762 134,439 148,476 145,068 ... 137,184 100,614 73,804 55,002 29,768 12,274 4,325 1,141 244 230

3 rows × 21 columns

df_m.iloc[0] = df_m.iloc[0].str.replace(',','').astype(int) # ,를 없애야 숫자 형태
# 778,266 -> 778266 (정수형)
df_m.iloc[0]
0~4세       1196298
5~9세       1215642
10~14세     1627682
15~19세     1878394
20~24세     1692322
25~29세     1798832
30~34세     2058717
35~39세     2151718
40~44세     2346348
45~49세     2171235
50~54세     2182972
55~59세     1608133
60~64세     1139681
65~69세      885678
70~74세      719811
75~79세      437707
80~84세      194827
85~89세       77608
90~94세       22964
95~99세        4766
100세 이상       2691
Name: 전국  , dtype: object

여자 데이터 정의

df_w = pd.read_excel(file_name, skiprows=3, index_col='행정기관', usecols='B,AB:AV')
df_w.head(3)
C:\Users\Chae\anaconda3\lib\site-packages\openpyxl\styles\stylesheet.py:226: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")
0~4세.1 5~9세.1 10~14세.1 15~19세.1 20~24세.1 25~29세.1 30~34세.1 35~39세.1 40~44세.1 45~49세.1 ... 55~59세.1 60~64세.1 65~69세.1 70~74세.1 75~79세.1 80~84세.1 85~89세.1 90~94세.1 95~99세.1 100세 이상.1
행정기관
전국 1,128,024 1,126,625 1,492,152 1,659,937 1,525,305 1,691,682 1,975,775 2,068,220 2,277,052 2,051,092 ... 1,624,628 1,189,414 1,009,513 933,302 700,197 429,811 208,227 73,481 19,130 9,067
서울특별시 205,591 199,837 260,917 309,366 333,116 431,682 466,958 437,616 460,637 408,707 ... 361,120 258,846 205,704 159,556 108,150 67,410 34,724 13,038 3,930 2,718
부산광역시 64,052 64,215 89,346 109,301 109,765 118,838 132,634 130,434 152,203 148,289 ... 143,244 105,702 79,870 68,449 47,084 28,764 13,212 4,138 1,169 848

3 rows × 21 columns

df_m.columns
Index(['0~4세', '5~9세', '10~14세', '15~19세', '20~24세', '25~29세', '30~34세',
       '35~39세', '40~44세', '45~49세', '50~54세', '55~59세', '60~64세', '65~69세',
       '70~74세', '75~79세', '80~84세', '85~89세', '90~94세', '95~99세', '100세 이상'],
      dtype='object')
df_w.columns
Index(['0~4세.1', '5~9세.1', '10~14세.1', '15~19세.1', '20~24세.1', '25~29세.1',
       '30~34세.1', '35~39세.1', '40~44세.1', '45~49세.1', '50~54세.1', '55~59세.1',
       '60~64세.1', '65~69세.1', '70~74세.1', '75~79세.1', '80~84세.1', '85~89세.1',
       '90~94세.1', '95~99세.1', '100세 이상.1'],
      dtype='object')
df_w.columns = df_m.columns # column명 통일
df_w.columns
Index(['0~4세', '5~9세', '10~14세', '15~19세', '20~24세', '25~29세', '30~34세',
       '35~39세', '40~44세', '45~49세', '50~54세', '55~59세', '60~64세', '65~69세',
       '70~74세', '75~79세', '80~84세', '85~89세', '90~94세', '95~99세', '100세 이상'],
      dtype='object')
df_w.iloc[0] = df_w.iloc[0].str.replace(',','').astype(int) # ,를 없애야 숫자 형태
df_w
0~4세 5~9세 10~14세 15~19세 20~24세 25~29세 30~34세 35~39세 40~44세 45~49세 ... 55~59세 60~64세 65~69세 70~74세 75~79세 80~84세 85~89세 90~94세 95~99세 100세 이상
행정기관
전국 1128024 1126625 1492152 1659937 1525305 1691682 1975775 2068220 2277052 2051092 ... 1624628 1189414 1009513 933302 700197 429811 208227 73481 19130 9067
서울특별시 205,591 199,837 260,917 309,366 333,116 431,682 466,958 437,616 460,637 408,707 ... 361,120 258,846 205,704 159,556 108,150 67,410 34,724 13,038 3,930 2,718
부산광역시 64,052 64,215 89,346 109,301 109,765 118,838 132,634 130,434 152,203 148,289 ... 143,244 105,702 79,870 68,449 47,084 28,764 13,212 4,138 1,169 848
대구광역시 49,948 53,051 75,410 85,710 74,443 78,377 92,385 102,300 119,437 110,168 ... 85,274 62,991 48,418 44,476 31,975 18,546 8,294 2,810 674 299
인천광역시 64,864 63,616 83,564 98,190 91,558 96,173 111,632 116,458 131,634 124,498 ... 83,158 55,092 45,735 40,026 30,147 19,094 9,480 3,257 796 340
광주광역시 34,978 37,433 52,811 57,080 47,370 50,389 58,849 62,657 67,102 58,957 ... 39,857 32,150 25,430 22,227 15,967 10,292 4,979 1,937 483 231
대전광역시 36,093 37,409 49,028 53,858 48,660 52,617 61,324 65,195 71,439 61,626 ... 45,575 30,964 24,734 21,572 16,432 10,054 4,925 1,664 446 171
울산광역시 27,457 26,136 36,544 41,047 33,731 35,482 43,997 46,873 56,623 50,929 ... 34,158 21,359 15,118 12,825 9,493 6,071 3,104 964 235 74
경기도 303,357 304,120 384,018 407,977 363,742 392,430 491,417 541,293 585,302 499,588 ... 327,612 223,844 195,150 173,894 127,929 77,323 38,307 13,656 3,472 1,560
강원도 30,345 32,906 44,797 48,519 41,916 40,155 48,140 54,839 61,788 60,033 ... 54,606 37,163 39,412 39,172 27,889 17,883 9,032 3,218 778 294
충청북도 35,343 35,345 47,541 51,326 44,030 47,141 53,863 58,887 66,286 59,916 ... 49,960 34,890 34,302 34,572 28,331 16,628 7,721 2,724 700 218
충청남도 50,196 48,319 62,034 65,004 58,388 61,733 72,805 77,695 82,638 74,456 ... 64,268 52,593 47,814 51,632 44,245 25,532 12,347 4,316 1,114 430
전라북도 39,258 41,556 57,815 63,584 53,136 51,798 59,084 66,444 73,506 68,970 ... 59,516 52,141 46,748 48,723 40,106 24,689 11,191 4,179 1,054 411
전라남도 39,129 39,570 55,977 61,266 48,823 47,507 54,873 59,908 68,800 68,319 ... 59,716 56,165 56,025 63,042 48,400 31,154 14,607 5,210 1,346 510
경상북도 55,342 53,470 72,403 79,585 72,043 75,465 88,163 94,825 105,919 102,809 ... 95,244 74,322 66,870 72,621 58,569 35,449 17,012 6,066 1,400 418
경상남도 78,113 74,948 100,365 107,721 88,713 95,623 120,125 130,369 147,946 131,028 ... 104,561 78,006 66,308 68,975 55,660 34,847 15,953 4,719 1,036 391
제주특별자치도 13,958 14,694 19,582 20,403 15,871 16,272 19,526 22,427 25,792 22,799 ... 16,759 13,186 11,875 11,540 9,820 6,075 3,339 1,585 497 154

17 rows × 21 columns

데이터 시각화

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic' # 글자 폰트
matplotlib.rcParams['font.size'] = 15 # 글자 크기
matplotlib.rcParams['axes.unicode_minus'] = False # 한글 폰트 사용 시, 마이너스 글자가 깨지는 현상을 해결
plt.figure(figsize=(10,7))
plt.barh(df_m.columns, -df_m.iloc[0] // 1000 )  # 단위 : 천 명
plt.barh(df_w.columns, df_w.iloc[0] // 1000 )
plt.title("2012년 대한민국 인구 피라미드")
plt.savefig('2012_인구피라미드.png', dpi=100)
plt.show()

댓글남기기