대한민국의 인구 분석 및 시각화

위키백과 - 대한민국의 인구

  • https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%9D%B8%EA%B5%AC

  • html 문서의 테이블 가져오기

import pandas as pd
url = "https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%9D%B8%EA%B5%AC"
html = pd.read_html(url)
#len(population)
#html 
html[4] #url 문서의 4번째 인덱스 테이블 가져오기
연도 (년) 추계인구(명) 출생자수(명) 사망자수(명) 자연증가수(명) 조출생률 (1000명당) 조사망률 (1000명당) 자연증가율 (1000명당) 합계출산율
0 1925 12997611 558897 359042 199855 43.0 27.6 15.4 6.590
1 1926 13052741 511667 337948 173719 39.2 25.9 13.3 NaN
2 1927 13037169 534524 353818 180706 41.0 27.1 13.9 NaN
3 1928 13105131 566142 357701 208441 43.2 27.3 15.9 NaN
4 1929 13124279 566969 414366 152603 43.2 31.6 11.6 NaN
... ... ... ... ... ... ... ... ... ...
92 2017 51446201 357771 285534 72237 7.0 5.5 1.5 1.052
93 2018 51635256 326822 298820 28002 6.4 5.8 0.6 0.977
94 2019 51709098 303054 295132 7922 5.9 5.7 0.2 0.918
95 2020 51829023 272337 304948 -32611 5.3 5.9 -0.6 0.837
96 2021 51744876 260494 317773 -57280 5.1 6.2 -1.1 0.810

97 rows × 9 columns

birth_death_statistics = html[4] # 출생 및 사망 통계
#birth_death_statistics.shape
birth_death_statistics
연도 (년) 추계인구(명) 출생자수(명) 사망자수(명) 자연증가수(명) 조출생률 (1000명당) 조사망률 (1000명당) 자연증가율 (1000명당) 합계출산율
0 1925 12997611 558897 359042 199855 43.0 27.6 15.4 6.590
1 1926 13052741 511667 337948 173719 39.2 25.9 13.3 NaN
2 1927 13037169 534524 353818 180706 41.0 27.1 13.9 NaN
3 1928 13105131 566142 357701 208441 43.2 27.3 15.9 NaN
4 1929 13124279 566969 414366 152603 43.2 31.6 11.6 NaN
... ... ... ... ... ... ... ... ... ...
92 2017 51446201 357771 285534 72237 7.0 5.5 1.5 1.052
93 2018 51635256 326822 298820 28002 6.4 5.8 0.6 0.977
94 2019 51709098 303054 295132 7922 5.9 5.7 0.2 0.918
95 2020 51829023 272337 304948 -32611 5.3 5.9 -0.6 0.837
96 2021 51744876 260494 317773 -57280 5.1 6.2 -1.1 0.810

97 rows × 9 columns

한글 폰트 설정

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

seaborn

  • Matplotlib을 기반으로 다양한 색상 테마와 통계용 차트 등의 기능을 추가한 시각화 패키지.
  • http://seaborn.pydata.org/
#!pip install IPython
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(font="NanumBarunGothic") # 글꼴 설정

plt.figure(figsize=(15,4)) # 차트의 크기
plt.xticks(rotation=90) # x축 레이블 각도
sns.pointplot(data=birth_death_statistics, x="연도 (년)", y="추계인구(명)")

image

plt.figure(figsize=(15,4))
plt.xticks(rotation=60)
sns.lineplot(data=birth_death_statistics, x="연도 (년)", y="추계인구(명)")

image

plt.figure(figsize=(15,4))
plt.xticks(rotation=60)
sns.pointplot(data=birth_death_statistics, x="연도 (년)", y="출생자수(명)")

image

  • y축의 의미 : 1e6 = 10**6
plt.figure(figsize=(15,4))
plt.xticks(rotation=60)
sns.lineplot(data=birth_death_statistics, x="연도 (년)", y="사망자수(명)")

image

plt.figure(figsize=(15,8))
plt.xticks(rotation=60)
sns.lineplot(data=birth_death_statistics, x="연도 (년)", y="출생자수(명)")
sns.lineplot(data=birth_death_statistics, x="연도 (년)", y="사망자수(명)", color="orange")

image

birth_death_statistics.columns
Index(['연도 (년)', '추계인구(명)', '출생자수(명)', '사망자수(명)', '자연증가수(명)', '조출생률 (1000명당)',
       '조사망률 (1000명당)', '자연증가율 (1000명당)', '합계출산율'],
      dtype='object')

pandas에서 기본으로 제공하는 plot을 이용하여 차트 만들기

temp = birth_death_statistics[['연도 (년)','출생자수(명)','사망자수(명)']]
temp = temp.set_index('연도 (년)') # 연도 (년) 데이터를 x축으로 변경
temp.plot(figsize=(15,4))

image

temp
출생자수(명) 사망자수(명)
연도 (년)
1925 558897 359042
1926 511667 337948
1927 534524 353818
1928 566142 357701
1929 566969 414366
... ... ...
2017 357771 285534
2018 326822 298820
2019 303054 295132
2020 272337 304948
2021 260494 317773

97 rows × 2 columns

#temp[-50:] #최근 50년
temp[-50:].plot(figsize=(15,8))

image

seaborn - barplot 만들기

plt.figure(figsize=(15,4))
plt.xticks(rotation=60)
#sns.barplot(data=birth_death_statistics, x="연도 (년)", y="추계인구(명)")
sns.barplot(data=birth_death_statistics, x="연도 (년)", y="추계인구(명)", palette="Blues")

image

plt.figure(figsize=(15,4))
plt.xticks(rotation=60)
sns.pointplot(data=birth_death_statistics, x="연도 (년)", y="추계인구(명)", palette="Blues")

image

plt.figure(figsize=(15,4))
plt.xticks(rotation=60)
sns.lineplot(data=birth_death_statistics, x="연도 (년)", y="추계인구(명)")

image

카테고리:

업데이트:

댓글남기기