2 분 소요

PYTHON PROGRAMMING

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb

%matplotlib inline

import platform

from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False

if platform.system() == 'Darwin':
    rc('font', family='AppleGothic')
elif platform.system() == 'Windows':
    path = "c:/Windows/Fonts/malgun.ttf"
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
else:
    print('Unknown system... sorry~~~~')

https://mois.go.kr

에서, 연령별 인구현황 통계표를 csv로 다운로드 합니다. (남녀구문을 uncheck, 연령1세단위, 0~100, 전체읍면동현황)

df = pd.read_csv("age.csv",encoding='cp949',thousands=',')
df
행정구역 2019년07월_계_총인구수 2019년07월_계_연령구간인구수 2019년07월_계_0세 2019년07월_계_1세 2019년07월_계_2세 2019년07월_계_3세 2019년07월_계_4세 2019년07월_계_5세 2019년07월_계_6세 ... 2019년07월_계_91세 2019년07월_계_92세 2019년07월_계_93세 2019년07월_계_94세 2019년07월_계_95세 2019년07월_계_96세 2019년07월_계_97세 2019년07월_계_98세 2019년07월_계_99세 2019년07월_계_100세 이상
0 서울특별시 (1100000000) 9751415 9751415 52269 56871 61712 68720 70746 69097 72474 ... 7430 5689 4099 3061 2448 2492 1727 1189 891 6123
1 서울특별시 종로구 (1111000000) 151858 151858 620 604 735 869 849 857 980 ... 153 144 115 80 70 63 67 40 37 247
2 서울특별시 종로구 청운효자동(1111051500) 12886 12886 63 69 87 78 109 87 104 ... 7 9 14 8 7 6 5 4 2 17
3 서울특별시 종로구 사직동(1111053000) 9402 9402 36 43 55 59 75 68 75 ... 12 8 13 5 5 9 1 3 4 18
4 서울특별시 종로구 삼청동(1111054000) 2782 2782 7 9 13 12 11 11 9 ... 6 6 2 3 1 1 2 1 1 7
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3812 제주특별자치도 서귀포시 서홍동(5013058000) 10505 10505 73 88 102 117 135 119 158 ... 11 1 5 0 1 3 2 1 0 2
3813 제주특별자치도 서귀포시 대륜동(5013059000) 14356 14356 123 147 171 173 169 173 146 ... 10 9 6 2 2 11 5 1 3 7
3814 제주특별자치도 서귀포시 대천동(5013060000) 13724 13724 123 160 192 210 187 179 178 ... 19 8 3 6 2 4 4 1 3 1
3815 제주특별자치도 서귀포시 중문동(5013061000) 11279 11279 67 67 73 92 108 92 121 ... 11 9 5 2 3 6 1 2 1 6
3816 제주특별자치도 서귀포시 예래동(5013062000) 4069 4069 31 19 25 30 29 23 30 ... 4 7 4 3 0 7 3 1 1 4

3817 rows × 104 columns

실습 1. ‘삼청동’ 의 인구 구조를, 0세부터 100세 까지 나이대 별로 몇명이 있는지 시각화 하세요.

  • 가로축은 나이, 세로축은 인구수
# df.loc[df['행정구역'].str.contains("삼청동"),'2019년07월_계_0세':].values 의 메모리를 보면 2차원 배열이다.
# 2차원 배열은 plot 의 변수가 될 수 없으므로 reshape(-1)을 통하여 1차원 배열로 변수를 바꿔준다.
pop_city = df.loc[df['행정구역'].str.contains("삼청동"),'2019년07월_계_0세':].values.reshape(-1)
plt.plot(np.arange(101),age.values.reshape(-1))
plt.xlabel("나이")
plt.ylabel("인구수")
plt.title('삼청동 인구수')
plt.show()

1

실습 2. ‘종로구’ 의 인구 구조를, 0세부터 100세 까지 나이대 별로 몇명이 있는지 시각화 하세요.

  • 가로축은 나이, 세로축은 인구수
df2 = df.loc[df['행정구역'].str.contains("종로구"),'2019년07월_계_0세':]
city_pop = df2.iloc[0].values
plt.plot(np.arange(0,101),city_pop)
plt.xlabel("나이")
plt.ylabel("인구수")
plt.title('종로구 인구수')
plt.show()

2

댓글남기기