07. Population
목표
- 1. 인구 소멸 위기 지역 파악
- 2 인구 소멸 위기 지역의 지도 표현
- 3. 지도 표현에 대한 카르토그램 표현
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import hangul_font
import warnings
warnings.filterwarnings(action="ignore")
%matplotlib inline
-엑셀 원본 파일 확인
population = pd.read_excel("../data/07_population_raw_data.xlsx", header=1)
population.head()
|
행정구역(동읍면)별(1) |
행정구역(동읍면)별(2) |
항목 |
계 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
0 |
전국 |
소계 |
총인구수 (명) |
51696216.0 |
3541061.0 |
3217367.0 |
3517868 |
4016272.0 |
2237345.0 |
1781229.0 |
1457890 |
909130.0 |
416164.0 |
141488.0 |
34844 |
17562.0 |
1 |
NaN |
NaN |
남자인구수 (명) |
25827594.0 |
1877127.0 |
1682988.0 |
1806754 |
2045265.0 |
1072395.0 |
806680.0 |
600607 |
319391.0 |
113221.0 |
32695.0 |
7658 |
4137.0 |
2 |
NaN |
NaN |
여자인구수 (명) |
25868622.0 |
1663934.0 |
1534379.0 |
1711114 |
1971007.0 |
1164950.0 |
974549.0 |
857283 |
589739.0 |
302943.0 |
108793.0 |
27186 |
13425.0 |
3 |
서울특별시 |
소계 |
총인구수 (명) |
9930616.0 |
690728.0 |
751973.0 |
803507 |
817467.0 |
448956.0 |
350580.0 |
251961 |
141649.0 |
66067.0 |
24153.0 |
7058 |
5475.0 |
4 |
NaN |
NaN |
남자인구수 (명) |
4876789.0 |
347534.0 |
372249.0 |
402358 |
410076.0 |
211568.0 |
163766.0 |
112076 |
54033.0 |
19595.0 |
6146.0 |
1900 |
1406.0 |
- fillna()
: fillna() : 데이터프레임에 NaN값을 채워넣는 옵션
- NaN값이 있을 경우 method 옵션 중 pad를 사용하면 앞(위)에 값을 그대로 가져와서 채워줌
- method 옵션 종류 : {'backfill, 'bfill', 'pad', 'ffill', None} backfill은 뒤의 값을 가져와서 채워줌
- (method="pad", axis=0) : 가로 축 기준으로 데이터 채워줌
datas = {
"A":np.random.randint(1,45,8),
"B":np.random.randint(1,45,8),
"C":np.random.randint(1,45,8)
}
datas
{'A': array([29, 26, 1, 7, 21, 28, 5, 38]),
'B': array([11, 26, 6, 11, 1, 21, 24, 20]),
'C': array([24, 31, 24, 6, 17, 20, 22, 28])}
fillna_df = pd.DataFrame(datas)
fillna_df
|
A |
B |
C |
0 |
29 |
11 |
24 |
1 |
26 |
26 |
31 |
2 |
1 |
6 |
24 |
3 |
7 |
11 |
6 |
4 |
21 |
1 |
17 |
5 |
28 |
21 |
20 |
6 |
5 |
24 |
22 |
7 |
38 |
20 |
28 |
fillna_df.loc[2:4,["A"]] = np.nan
fillna_df.loc[3:5,["B"]] = np.nan
fillna_df.loc[4:7,["C"]] = np.nan
fillna_df
|
A |
B |
C |
0 |
29.0 |
11.0 |
24.0 |
1 |
26.0 |
26.0 |
31.0 |
2 |
NaN |
6.0 |
24.0 |
3 |
NaN |
NaN |
6.0 |
4 |
NaN |
NaN |
NaN |
5 |
28.0 |
NaN |
NaN |
6 |
5.0 |
24.0 |
NaN |
7 |
38.0 |
20.0 |
NaN |
fillna_df.fillna(value=1)
|
A |
B |
C |
0 |
29.0 |
11.0 |
24.0 |
1 |
26.0 |
26.0 |
31.0 |
2 |
1.0 |
6.0 |
24.0 |
3 |
1.0 |
1.0 |
6.0 |
4 |
1.0 |
1.0 |
1.0 |
5 |
28.0 |
1.0 |
1.0 |
6 |
5.0 |
24.0 |
1.0 |
7 |
38.0 |
20.0 |
1.0 |
fillna_df.fillna(method="pad")
|
A |
B |
C |
0 |
29.0 |
11.0 |
24.0 |
1 |
26.0 |
26.0 |
31.0 |
2 |
26.0 |
6.0 |
24.0 |
3 |
26.0 |
6.0 |
6.0 |
4 |
26.0 |
6.0 |
6.0 |
5 |
28.0 |
6.0 |
6.0 |
6 |
5.0 |
24.0 |
6.0 |
7 |
38.0 |
20.0 |
6.0 |
population.fillna(method="pad", inplace=True)
population
|
행정구역(동읍면)별(1) |
행정구역(동읍면)별(2) |
항목 |
계 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
0 |
전국 |
소계 |
총인구수 (명) |
51696216.0 |
3541061.0 |
3217367.0 |
3517868 |
4016272.0 |
2237345.0 |
1781229.0 |
1457890 |
909130.0 |
416164.0 |
141488.0 |
34844 |
17562.0 |
1 |
전국 |
소계 |
남자인구수 (명) |
25827594.0 |
1877127.0 |
1682988.0 |
1806754 |
2045265.0 |
1072395.0 |
806680.0 |
600607 |
319391.0 |
113221.0 |
32695.0 |
7658 |
4137.0 |
2 |
전국 |
소계 |
여자인구수 (명) |
25868622.0 |
1663934.0 |
1534379.0 |
1711114 |
1971007.0 |
1164950.0 |
974549.0 |
857283 |
589739.0 |
302943.0 |
108793.0 |
27186 |
13425.0 |
3 |
서울특별시 |
소계 |
총인구수 (명) |
9930616.0 |
690728.0 |
751973.0 |
803507 |
817467.0 |
448956.0 |
350580.0 |
251961 |
141649.0 |
66067.0 |
24153.0 |
7058 |
5475.0 |
4 |
서울특별시 |
소계 |
남자인구수 (명) |
4876789.0 |
347534.0 |
372249.0 |
402358 |
410076.0 |
211568.0 |
163766.0 |
112076 |
54033.0 |
19595.0 |
6146.0 |
1900 |
1406.0 |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
841 |
제주특별자치도 |
제주시 |
남자인구수 (명) |
235977.0 |
17377.0 |
13118.0 |
15084 |
18350.0 |
8474.0 |
6782.0 |
4941 |
2737.0 |
854.0 |
226.0 |
53 |
17.0 |
842 |
제주특별자치도 |
제주시 |
여자인구수 (명) |
234688.0 |
15261.0 |
12245.0 |
14687 |
18062.0 |
9265.0 |
7877.0 |
7178 |
5649.0 |
3122.0 |
1387.0 |
460 |
137.0 |
843 |
제주특별자치도 |
서귀포시 |
총인구수 (명) |
170932.0 |
10505.0 |
8067.0 |
9120 |
11606.0 |
8686.0 |
7460.0 |
6456 |
4521.0 |
1855.0 |
733.0 |
242 |
77.0 |
844 |
제주특별자치도 |
서귀포시 |
남자인구수 (명) |
86568.0 |
5600.0 |
4247.0 |
4693 |
6082.0 |
4237.0 |
3441.0 |
2611 |
1494.0 |
370.0 |
103.0 |
29 |
9.0 |
845 |
제주특별자치도 |
서귀포시 |
여자인구수 (명) |
84364.0 |
4905.0 |
3820.0 |
4427 |
5524.0 |
4449.0 |
4019.0 |
3845 |
3027.0 |
1485.0 |
630.0 |
213 |
68.0 |
846 rows × 16 columns
population.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 846 entries, 0 to 845
Data columns (total 16 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 행정구역(동읍면)별(1) 846 non-null object
1 행정구역(동읍면)별(2) 846 non-null object
2 항목 846 non-null object
3 계 846 non-null float64
4 20 - 24세 846 non-null float64
5 25 - 29세 846 non-null float64
6 30 - 34세 846 non-null int64
7 35 - 39세 846 non-null float64
8 65 - 69세 846 non-null float64
9 70 - 74세 846 non-null float64
10 75 - 79세 846 non-null int64
11 80 - 84세 846 non-null float64
12 85 - 89세 846 non-null float64
13 90 - 94세 846 non-null float64
14 95 - 99세 846 non-null int64
15 100+ 846 non-null float64
dtypes: float64(10), int64(3), object(3)
memory usage: 105.9+ KB
population.rename(
columns={
"행정구역(동읍면)별(1)":"광역시도",
"행정구역(동읍면)별(2)":"시도",
"계":"인구수"}
, inplace=True)
population.tail()
|
광역시도 |
시도 |
항목 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
841 |
제주특별자치도 |
제주시 |
남자인구수 (명) |
235977.0 |
17377.0 |
13118.0 |
15084 |
18350.0 |
8474.0 |
6782.0 |
4941 |
2737.0 |
854.0 |
226.0 |
53 |
17.0 |
842 |
제주특별자치도 |
제주시 |
여자인구수 (명) |
234688.0 |
15261.0 |
12245.0 |
14687 |
18062.0 |
9265.0 |
7877.0 |
7178 |
5649.0 |
3122.0 |
1387.0 |
460 |
137.0 |
843 |
제주특별자치도 |
서귀포시 |
총인구수 (명) |
170932.0 |
10505.0 |
8067.0 |
9120 |
11606.0 |
8686.0 |
7460.0 |
6456 |
4521.0 |
1855.0 |
733.0 |
242 |
77.0 |
844 |
제주특별자치도 |
서귀포시 |
남자인구수 (명) |
86568.0 |
5600.0 |
4247.0 |
4693 |
6082.0 |
4237.0 |
3441.0 |
2611 |
1494.0 |
370.0 |
103.0 |
29 |
9.0 |
845 |
제주특별자치도 |
서귀포시 |
여자인구수 (명) |
84364.0 |
4905.0 |
3820.0 |
4427 |
5524.0 |
4449.0 |
4019.0 |
3845 |
3027.0 |
1485.0 |
630.0 |
213 |
68.0 |
population.head()
|
광역시도 |
시도 |
항목 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
0 |
전국 |
소계 |
총인구수 (명) |
51696216.0 |
3541061.0 |
3217367.0 |
3517868 |
4016272.0 |
2237345.0 |
1781229.0 |
1457890 |
909130.0 |
416164.0 |
141488.0 |
34844 |
17562.0 |
1 |
전국 |
소계 |
남자인구수 (명) |
25827594.0 |
1877127.0 |
1682988.0 |
1806754 |
2045265.0 |
1072395.0 |
806680.0 |
600607 |
319391.0 |
113221.0 |
32695.0 |
7658 |
4137.0 |
2 |
전국 |
소계 |
여자인구수 (명) |
25868622.0 |
1663934.0 |
1534379.0 |
1711114 |
1971007.0 |
1164950.0 |
974549.0 |
857283 |
589739.0 |
302943.0 |
108793.0 |
27186 |
13425.0 |
3 |
서울특별시 |
소계 |
총인구수 (명) |
9930616.0 |
690728.0 |
751973.0 |
803507 |
817467.0 |
448956.0 |
350580.0 |
251961 |
141649.0 |
66067.0 |
24153.0 |
7058 |
5475.0 |
4 |
서울특별시 |
소계 |
남자인구수 (명) |
4876789.0 |
347534.0 |
372249.0 |
402358 |
410076.0 |
211568.0 |
163766.0 |
112076 |
54033.0 |
19595.0 |
6146.0 |
1900 |
1406.0 |
population = population[population["시도"] != "소계"]
population.head()
|
광역시도 |
시도 |
항목 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
6 |
서울특별시 |
종로구 |
총인구수 (명) |
152737.0 |
11379.0 |
11891.0 |
10684 |
10379.0 |
7411.0 |
6636.0 |
5263 |
3104.0 |
1480.0 |
602.0 |
234 |
220.0 |
7 |
서울특별시 |
종로구 |
남자인구수 (명) |
75201.0 |
5620.0 |
6181.0 |
5387 |
5034.0 |
3411.0 |
3009.0 |
2311 |
1289.0 |
506.0 |
207.0 |
89 |
73.0 |
8 |
서울특별시 |
종로구 |
여자인구수 (명) |
77536.0 |
5759.0 |
5710.0 |
5297 |
5345.0 |
4000.0 |
3627.0 |
2952 |
1815.0 |
974.0 |
395.0 |
145 |
147.0 |
9 |
서울특별시 |
중구 |
총인구수 (명) |
125249.0 |
8216.0 |
9529.0 |
10332 |
10107.0 |
6399.0 |
5313.0 |
4127 |
2502.0 |
1260.0 |
469.0 |
158 |
160.0 |
10 |
서울특별시 |
중구 |
남자인구수 (명) |
62204.0 |
4142.0 |
4792.0 |
5192 |
5221.0 |
3113.0 |
2405.0 |
1752 |
929.0 |
414.0 |
132.0 |
56 |
51.0 |
population.is_copy = False
population.rename(
columns = {"항목":"구분"}, inplace=True
)
population.head()
|
광역시도 |
시도 |
구분 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
6 |
서울특별시 |
종로구 |
총인구수 (명) |
152737.0 |
11379.0 |
11891.0 |
10684 |
10379.0 |
7411.0 |
6636.0 |
5263 |
3104.0 |
1480.0 |
602.0 |
234 |
220.0 |
7 |
서울특별시 |
종로구 |
남자인구수 (명) |
75201.0 |
5620.0 |
6181.0 |
5387 |
5034.0 |
3411.0 |
3009.0 |
2311 |
1289.0 |
506.0 |
207.0 |
89 |
73.0 |
8 |
서울특별시 |
종로구 |
여자인구수 (명) |
77536.0 |
5759.0 |
5710.0 |
5297 |
5345.0 |
4000.0 |
3627.0 |
2952 |
1815.0 |
974.0 |
395.0 |
145 |
147.0 |
9 |
서울특별시 |
중구 |
총인구수 (명) |
125249.0 |
8216.0 |
9529.0 |
10332 |
10107.0 |
6399.0 |
5313.0 |
4127 |
2502.0 |
1260.0 |
469.0 |
158 |
160.0 |
10 |
서울특별시 |
중구 |
남자인구수 (명) |
62204.0 |
4142.0 |
4792.0 |
5192 |
5221.0 |
3113.0 |
2405.0 |
1752 |
929.0 |
414.0 |
132.0 |
56 |
51.0 |
population.loc[population["구분"] == "총인구수 (명)", "구분"] = "합계"
population.head()
|
광역시도 |
시도 |
구분 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
6 |
서울특별시 |
종로구 |
합계 |
152737.0 |
11379.0 |
11891.0 |
10684 |
10379.0 |
7411.0 |
6636.0 |
5263 |
3104.0 |
1480.0 |
602.0 |
234 |
220.0 |
7 |
서울특별시 |
종로구 |
남자인구수 (명) |
75201.0 |
5620.0 |
6181.0 |
5387 |
5034.0 |
3411.0 |
3009.0 |
2311 |
1289.0 |
506.0 |
207.0 |
89 |
73.0 |
8 |
서울특별시 |
종로구 |
여자인구수 (명) |
77536.0 |
5759.0 |
5710.0 |
5297 |
5345.0 |
4000.0 |
3627.0 |
2952 |
1815.0 |
974.0 |
395.0 |
145 |
147.0 |
9 |
서울특별시 |
중구 |
합계 |
125249.0 |
8216.0 |
9529.0 |
10332 |
10107.0 |
6399.0 |
5313.0 |
4127 |
2502.0 |
1260.0 |
469.0 |
158 |
160.0 |
10 |
서울특별시 |
중구 |
남자인구수 (명) |
62204.0 |
4142.0 |
4792.0 |
5192 |
5221.0 |
3113.0 |
2405.0 |
1752 |
929.0 |
414.0 |
132.0 |
56 |
51.0 |
population.loc[population["구분"] == "남자인구수 (명)", "구분"] = "남자"
population.loc[population["구분"] == "여자인구수 (명)", "구분"] = "여자"
population.head()
|
광역시도 |
시도 |
구분 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
6 |
서울특별시 |
종로구 |
합계 |
152737.0 |
11379.0 |
11891.0 |
10684 |
10379.0 |
7411.0 |
6636.0 |
5263 |
3104.0 |
1480.0 |
602.0 |
234 |
220.0 |
7 |
서울특별시 |
종로구 |
남자 |
75201.0 |
5620.0 |
6181.0 |
5387 |
5034.0 |
3411.0 |
3009.0 |
2311 |
1289.0 |
506.0 |
207.0 |
89 |
73.0 |
8 |
서울특별시 |
종로구 |
여자 |
77536.0 |
5759.0 |
5710.0 |
5297 |
5345.0 |
4000.0 |
3627.0 |
2952 |
1815.0 |
974.0 |
395.0 |
145 |
147.0 |
9 |
서울특별시 |
중구 |
합계 |
125249.0 |
8216.0 |
9529.0 |
10332 |
10107.0 |
6399.0 |
5313.0 |
4127 |
2502.0 |
1260.0 |
469.0 |
158 |
160.0 |
10 |
서울특별시 |
중구 |
남자 |
62204.0 |
4142.0 |
4792.0 |
5192 |
5221.0 |
3113.0 |
2405.0 |
1752 |
929.0 |
414.0 |
132.0 |
56 |
51.0 |
population["20-39세"] = (
population["20 - 24세"] + population["25 - 29세"] + population["30 - 34세"] + population["35 - 39세"])
population["65세 이상"] = (
population["65 - 69세"] + population["70 - 74세"] + population["75 - 79세"] + population["80 - 84세"] +
population["85 - 89세"] + population["90 - 94세"] + population["95 - 99세"] + population["100+"])
population.tail()
|
광역시도 |
시도 |
구분 |
인구수 |
20 - 24세 |
25 - 29세 |
30 - 34세 |
35 - 39세 |
65 - 69세 |
70 - 74세 |
75 - 79세 |
80 - 84세 |
85 - 89세 |
90 - 94세 |
95 - 99세 |
100+ |
20-39세 |
65세 이상 |
841 |
제주특별자치도 |
제주시 |
남자 |
235977.0 |
17377.0 |
13118.0 |
15084 |
18350.0 |
8474.0 |
6782.0 |
4941 |
2737.0 |
854.0 |
226.0 |
53 |
17.0 |
63929.0 |
24084.0 |
842 |
제주특별자치도 |
제주시 |
여자 |
234688.0 |
15261.0 |
12245.0 |
14687 |
18062.0 |
9265.0 |
7877.0 |
7178 |
5649.0 |
3122.0 |
1387.0 |
460 |
137.0 |
60255.0 |
35075.0 |
843 |
제주특별자치도 |
서귀포시 |
합계 |
170932.0 |
10505.0 |
8067.0 |
9120 |
11606.0 |
8686.0 |
7460.0 |
6456 |
4521.0 |
1855.0 |
733.0 |
242 |
77.0 |
39298.0 |
30030.0 |
844 |
제주특별자치도 |
서귀포시 |
남자 |
86568.0 |
5600.0 |
4247.0 |
4693 |
6082.0 |
4237.0 |
3441.0 |
2611 |
1494.0 |
370.0 |
103.0 |
29 |
9.0 |
20622.0 |
12294.0 |
845 |
제주특별자치도 |
서귀포시 |
여자 |
84364.0 |
4905.0 |
3820.0 |
4427 |
5524.0 |
4449.0 |
4019.0 |
3845 |
3027.0 |
1485.0 |
630.0 |
213 |
68.0 |
18676.0 |
17736.0 |
pop = pd.pivot_table(
data = population,
index=["광역시도", "시도"],
columns=["구분"],
values=["인구수","20-39세", "65세 이상"])
pop
|
|
20-39세 |
65세 이상 |
인구수 |
|
구분 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
광역시도 |
시도 |
|
|
|
|
|
|
|
|
|
강원도 |
강릉시 |
26286.0 |
23098.0 |
49384.0 |
15767.0 |
21912.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
고성군 |
4494.0 |
2529.0 |
7023.0 |
2900.0 |
4251.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
동해시 |
11511.0 |
9753.0 |
21264.0 |
6392.0 |
8732.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
삼척시 |
8708.0 |
7115.0 |
15823.0 |
5892.0 |
8718.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
속초시 |
9956.0 |
8752.0 |
18708.0 |
5139.0 |
7613.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
충청북도 |
진천군 |
9391.0 |
7622.0 |
17013.0 |
4731.0 |
6575.0 |
11306.0 |
36387.0 |
33563.0 |
69950.0 |
청원구 |
32216.0 |
27805.0 |
60021.0 |
8417.0 |
11914.0 |
20331.0 |
97006.0 |
93807.0 |
190813.0 |
청주시 |
128318.0 |
115719.0 |
244037.0 |
37882.0 |
53671.0 |
91553.0 |
419323.0 |
415874.0 |
835197.0 |
충주시 |
26600.0 |
22757.0 |
49357.0 |
14407.0 |
20383.0 |
34790.0 |
104877.0 |
103473.0 |
208350.0 |
흥덕구 |
40933.0 |
37675.0 |
78608.0 |
9788.0 |
13671.0 |
23459.0 |
127647.0 |
125916.0 |
253563.0 |
264 rows × 9 columns
pop["소멸 비율"] = pop["20-39세", "여자"] / (pop["65세 이상", "합계"] / 2)
pop.head()
|
|
20-39세 |
65세 이상 |
인구수 |
소멸 비율 |
|
구분 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
|
광역시도 |
시도 |
|
|
|
|
|
|
|
|
|
|
강원도 |
강릉시 |
26286.0 |
23098.0 |
49384.0 |
15767.0 |
21912.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
1.226041 |
고성군 |
4494.0 |
2529.0 |
7023.0 |
2900.0 |
4251.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
0.707314 |
동해시 |
11511.0 |
9753.0 |
21264.0 |
6392.0 |
8732.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
1.289738 |
삼척시 |
8708.0 |
7115.0 |
15823.0 |
5892.0 |
8718.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
0.973990 |
속초시 |
9956.0 |
8752.0 |
18708.0 |
5139.0 |
7613.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
1.372647 |
pop["소멸 위기 지역"] = pop["소멸 비율"] < 1.0
pop
|
|
20-39세 |
65세 이상 |
인구수 |
소멸 비율 |
소멸 위기 지역 |
|
구분 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
|
|
광역시도 |
시도 |
|
|
|
|
|
|
|
|
|
|
|
강원도 |
강릉시 |
26286.0 |
23098.0 |
49384.0 |
15767.0 |
21912.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
1.226041 |
False |
고성군 |
4494.0 |
2529.0 |
7023.0 |
2900.0 |
4251.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
0.707314 |
True |
동해시 |
11511.0 |
9753.0 |
21264.0 |
6392.0 |
8732.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
1.289738 |
False |
삼척시 |
8708.0 |
7115.0 |
15823.0 |
5892.0 |
8718.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
0.973990 |
True |
속초시 |
9956.0 |
8752.0 |
18708.0 |
5139.0 |
7613.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
1.372647 |
False |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
충청북도 |
진천군 |
9391.0 |
7622.0 |
17013.0 |
4731.0 |
6575.0 |
11306.0 |
36387.0 |
33563.0 |
69950.0 |
1.348311 |
False |
청원구 |
32216.0 |
27805.0 |
60021.0 |
8417.0 |
11914.0 |
20331.0 |
97006.0 |
93807.0 |
190813.0 |
2.735232 |
False |
청주시 |
128318.0 |
115719.0 |
244037.0 |
37882.0 |
53671.0 |
91553.0 |
419323.0 |
415874.0 |
835197.0 |
2.527913 |
False |
충주시 |
26600.0 |
22757.0 |
49357.0 |
14407.0 |
20383.0 |
34790.0 |
104877.0 |
103473.0 |
208350.0 |
1.308249 |
False |
흥덕구 |
40933.0 |
37675.0 |
78608.0 |
9788.0 |
13671.0 |
23459.0 |
127647.0 |
125916.0 |
253563.0 |
3.211987 |
False |
264 rows × 11 columns
pop[pop["소멸 위기 지역"] == True].index.get_level_values(1)
Index(['고성군', '삼척시', '양양군', '영월군', '정선군', '평창군', '홍천군', '횡성군', '가평군', '양평군',
'연천군', '거창군', '고성군', '남해군', '밀양시', '산청군', '의령군', '창녕군', '하동군', '함안군',
'함양군', '합천군', '고령군', '군위군', '문경시', '봉화군', '상주시', '성주군', '영덕군', '영양군',
'영주시', '영천시', '예천군', '울릉군', '울진군', '의성군', '청도군', '청송군', '동구', '영도구',
'강화군', '옹진군', '강진군', '고흥군', '곡성군', '구례군', '담양군', '보성군', '신안군', '영광군',
'영암군', '완도군', '장성군', '장흥군', '진도군', '함평군', '해남군', '화순군', '고창군', '김제시',
'남원시', '무주군', '부안군', '순창군', '임실군', '장수군', '정읍시', '진안군', '공주시', '금산군',
'논산시', '보령시', '부여군', '서천군', '예산군', '청양군', '태안군', '홍성군', '괴산군', '단양군',
'보은군', '영동군', '옥천군'],
dtype='object', name='시도')
pop.reset_index(inplace=True)
pop
|
광역시도 |
시도 |
20-39세 |
65세 이상 |
인구수 |
소멸 비율 |
소멸 위기 지역 |
구분 |
|
|
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
남자 |
여자 |
합계 |
|
|
0 |
강원도 |
강릉시 |
26286.0 |
23098.0 |
49384.0 |
15767.0 |
21912.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
1.226041 |
False |
1 |
강원도 |
고성군 |
4494.0 |
2529.0 |
7023.0 |
2900.0 |
4251.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
0.707314 |
True |
2 |
강원도 |
동해시 |
11511.0 |
9753.0 |
21264.0 |
6392.0 |
8732.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
1.289738 |
False |
3 |
강원도 |
삼척시 |
8708.0 |
7115.0 |
15823.0 |
5892.0 |
8718.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
0.973990 |
True |
4 |
강원도 |
속초시 |
9956.0 |
8752.0 |
18708.0 |
5139.0 |
7613.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
1.372647 |
False |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
259 |
충청북도 |
진천군 |
9391.0 |
7622.0 |
17013.0 |
4731.0 |
6575.0 |
11306.0 |
36387.0 |
33563.0 |
69950.0 |
1.348311 |
False |
260 |
충청북도 |
청원구 |
32216.0 |
27805.0 |
60021.0 |
8417.0 |
11914.0 |
20331.0 |
97006.0 |
93807.0 |
190813.0 |
2.735232 |
False |
261 |
충청북도 |
청주시 |
128318.0 |
115719.0 |
244037.0 |
37882.0 |
53671.0 |
91553.0 |
419323.0 |
415874.0 |
835197.0 |
2.527913 |
False |
262 |
충청북도 |
충주시 |
26600.0 |
22757.0 |
49357.0 |
14407.0 |
20383.0 |
34790.0 |
104877.0 |
103473.0 |
208350.0 |
1.308249 |
False |
263 |
충청북도 |
흥덕구 |
40933.0 |
37675.0 |
78608.0 |
9788.0 |
13671.0 |
23459.0 |
127647.0 |
125916.0 |
253563.0 |
3.211987 |
False |
264 rows × 13 columns
tmp_columns = [
pop.columns.get_level_values(0)[n] + pop.columns.get_level_values(1)[n]
for n in range(0, len(pop.columns.get_level_values(0)))
]
pop.columns = tmp_columns
pop.head()
|
광역시도 |
시도 |
20-39세남자 |
20-39세여자 |
20-39세합계 |
65세 이상남자 |
65세 이상여자 |
65세 이상합계 |
인구수남자 |
인구수여자 |
인구수합계 |
소멸 비율 |
소멸 위기 지역 |
0 |
강원도 |
강릉시 |
26286.0 |
23098.0 |
49384.0 |
15767.0 |
21912.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
1.226041 |
False |
1 |
강원도 |
고성군 |
4494.0 |
2529.0 |
7023.0 |
2900.0 |
4251.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
0.707314 |
True |
2 |
강원도 |
동해시 |
11511.0 |
9753.0 |
21264.0 |
6392.0 |
8732.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
1.289738 |
False |
3 |
강원도 |
삼척시 |
8708.0 |
7115.0 |
15823.0 |
5892.0 |
8718.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
0.973990 |
True |
4 |
강원도 |
속초시 |
9956.0 |
8752.0 |
18708.0 |
5139.0 |
7613.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
1.372647 |
False |
지도 시각화를 위한 지역별 ID 만들기
pop["시도"].unique()
array(['강릉시', '고성군', '동해시', '삼척시', '속초시', '양구군', '양양군', '영월군', '원주시',
'인제군', '정선군', '철원군', '춘천시', '태백시', '평창군', '홍천군', '화천군', '횡성군',
'가평군', '고양시', '과천시', '광명시', '광주시', '구리시', '군포시', '권선구', '기흥구',
'김포시', '남양주시', '단원구', '덕양구', '동두천시', '동안구', '만안구', '부천시', '분당구',
'상록구', '성남시', '소사구', '수원시', '수정구', '수지구', '시흥시', '안산시', '안성시',
'안양시', '양주시', '양평군', '여주시', '연천군', '영통구', '오산시', '오정구', '용인시',
'원미구', '의왕시', '의정부시', '이천시', '일산동구', '일산서구', '장안구', '중원구', '처인구',
'파주시', '팔달구', '평택시', '포천시', '하남시', '화성시', '거제시', '거창군', '김해시',
'남해군', '마산합포구', '마산회원구', '밀양시', '사천시', '산청군', '성산구', '양산시', '의령군',
'의창구', '진주시', '진해구', '창녕군', '창원시', '통영시', '하동군', '함안군', '함양군',
'합천군', '경산시', '경주시', '고령군', '구미시', '군위군', '김천시', '남구', '문경시',
'봉화군', '북구', '상주시', '성주군', '안동시', '영덕군', '영양군', '영주시', '영천시',
'예천군', '울릉군', '울진군', '의성군', '청도군', '청송군', '칠곡군', '포항시', '광산구',
'동구', '서구', '달서구', '달성군', '수성구', '중구', '대덕구', '유성구', '강서구', '금정구',
'기장군', '동래구', '부산진구', '사상구', '사하구', '수영구', '연제구', '영도구', '해운대구',
'강남구', '강동구', '강북구', '관악구', '광진구', '구로구', '금천구', '노원구', '도봉구',
'동대문구', '동작구', '마포구', '서대문구', '서초구', '성동구', '성북구', '송파구', '양천구',
'영등포구', '용산구', '은평구', '종로구', '중랑구', '세종특별자치시', '울주군', '강화군', '계양구',
'남동구', '부평구', '연수구', '옹진군', '강진군', '고흥군', '곡성군', '광양시', '구례군',
'나주시', '담양군', '목포시', '무안군', '보성군', '순천시', '신안군', '여수시', '영광군',
'영암군', '완도군', '장성군', '장흥군', '진도군', '함평군', '해남군', '화순군', '고창군',
'군산시', '김제시', '남원시', '덕진구', '무주군', '부안군', '순창군', '완산구', '완주군',
'익산시', '임실군', '장수군', '전주시', '정읍시', '진안군', '서귀포시', '제주시', '계룡시',
'공주시', '금산군', '논산시', '당진시', '동남구', '보령시', '부여군', '서북구', '서산시',
'서천군', '아산시', '예산군', '천안시', '청양군', '태안군', '홍성군', '괴산군', '단양군',
'보은군', '상당구', '서원구', '영동군', '옥천군', '음성군', '제천시', '증평군', '진천군',
'청원구', '청주시', '충주시', '흥덕구'], dtype=object)
si_name = [None] * len(pop)
tmp_gu_dict= {
"수원":["장안구", "권선구", "팔달구", "영통구"],
"성남":["수정구", "중원구", "분당구"],
"안양":["만안구","동안구"],
"안산":["상록구", "단원구"],
"일산":["덕양구", "일산동구", "일산서구"],
"고양":["처인구", "기흥구", "수지구"],
"청주":["상당구", "서원구", "흥덕구","청원구"],
"천안":["동남구", "서북구"],
"전주":["완산구", "덕진구"],
"포항":["남구", "북구"],
"창원":["의창구","성산구","진해구","마산합포구","마산회원구"],
"부천":["오정구","원미구","소사구"],
}
pop["광역시도"].unique()
array(['강원도', '경기도', '경상남도', '경상북도', '광주광역시', '대구광역시', '대전광역시', '부산광역시',
'서울특별시', '세종특별자치시', '울산광역시', '인천광역시', '전라남도', '전라북도', '제주특별자치도',
'충청남도', '충청북도'], dtype=object)
pop["시도"].unique()
array(['강릉시', '고성군', '동해시', '삼척시', '속초시', '양구군', '양양군', '영월군', '원주시',
'인제군', '정선군', '철원군', '춘천시', '태백시', '평창군', '홍천군', '화천군', '횡성군',
'가평군', '고양시', '과천시', '광명시', '광주시', '구리시', '군포시', '권선구', '기흥구',
'김포시', '남양주시', '단원구', '덕양구', '동두천시', '동안구', '만안구', '부천시', '분당구',
'상록구', '성남시', '소사구', '수원시', '수정구', '수지구', '시흥시', '안산시', '안성시',
'안양시', '양주시', '양평군', '여주시', '연천군', '영통구', '오산시', '오정구', '용인시',
'원미구', '의왕시', '의정부시', '이천시', '일산동구', '일산서구', '장안구', '중원구', '처인구',
'파주시', '팔달구', '평택시', '포천시', '하남시', '화성시', '거제시', '거창군', '김해시',
'남해군', '마산합포구', '마산회원구', '밀양시', '사천시', '산청군', '성산구', '양산시', '의령군',
'의창구', '진주시', '진해구', '창녕군', '창원시', '통영시', '하동군', '함안군', '함양군',
'합천군', '경산시', '경주시', '고령군', '구미시', '군위군', '김천시', '남구', '문경시',
'봉화군', '북구', '상주시', '성주군', '안동시', '영덕군', '영양군', '영주시', '영천시',
'예천군', '울릉군', '울진군', '의성군', '청도군', '청송군', '칠곡군', '포항시', '광산구',
'동구', '서구', '달서구', '달성군', '수성구', '중구', '대덕구', '유성구', '강서구', '금정구',
'기장군', '동래구', '부산진구', '사상구', '사하구', '수영구', '연제구', '영도구', '해운대구',
'강남구', '강동구', '강북구', '관악구', '광진구', '구로구', '금천구', '노원구', '도봉구',
'동대문구', '동작구', '마포구', '서대문구', '서초구', '성동구', '성북구', '송파구', '양천구',
'영등포구', '용산구', '은평구', '종로구', '중랑구', '세종특별자치시', '울주군', '강화군', '계양구',
'남동구', '부평구', '연수구', '옹진군', '강진군', '고흥군', '곡성군', '광양시', '구례군',
'나주시', '담양군', '목포시', '무안군', '보성군', '순천시', '신안군', '여수시', '영광군',
'영암군', '완도군', '장성군', '장흥군', '진도군', '함평군', '해남군', '화순군', '고창군',
'군산시', '김제시', '남원시', '덕진구', '무주군', '부안군', '순창군', '완산구', '완주군',
'익산시', '임실군', '장수군', '전주시', '정읍시', '진안군', '서귀포시', '제주시', '계룡시',
'공주시', '금산군', '논산시', '당진시', '동남구', '보령시', '부여군', '서북구', '서산시',
'서천군', '아산시', '예산군', '천안시', '청양군', '태안군', '홍성군', '괴산군', '단양군',
'보은군', '상당구', '서원구', '영동군', '옥천군', '음성군', '제천시', '증평군', '진천군',
'청원구', '청주시', '충주시', '흥덕구'], dtype=object)
광역시도 + 시도 이름 합치기
- 만들 지역별 ID ex) 서울 중구, 서울 서초, 통영, 남양주, 포항 북구, 인천 남동, 안양 동안, 안산 단원 등..
(1) 일반 시 이름과 세종시, 광역시도 일반 구 정리
for idx,row in pop.iterrows():
if row["광역시도"][-3:] not in ["광역시", "특별시", "자치시"]:
si_name[idx] = row["시도"][:-1]
elif row["광역시도"] == "세종특별자치시":
si_name[idx] = "세종"
else:
if len(row["시도"]) == 2:
si_name[idx] = row["광역시도"][:2]+ " " + row["시도"]
else:
si_name[idx] = row["광역시도"][:2] + " " + row["시도"][:-1]
si_name
['강릉',
'고성',
'동해',
'삼척',
'속초',
'양구',
'양양',
'영월',
'원주',
'인제',
'정선',
'철원',
'춘천',
'태백',
'평창',
'홍천',
'화천',
'횡성',
'가평',
'고양',
'과천',
'광명',
'광주',
'구리',
'군포',
'권선',
'기흥',
'김포',
'남양주',
'단원',
'덕양',
'동두천',
'동안',
'만안',
'부천',
'분당',
'상록',
'성남',
'소사',
'수원',
'수정',
'수지',
'시흥',
'안산',
'안성',
'안양',
'양주',
'양평',
'여주',
'연천',
'영통',
'오산',
'오정',
'용인',
'원미',
'의왕',
'의정부',
'이천',
'일산동',
'일산서',
'장안',
'중원',
'처인',
'파주',
'팔달',
'평택',
'포천',
'하남',
'화성',
'거제',
'거창',
'고성',
'김해',
'남해',
'마산합포',
'마산회원',
'밀양',
'사천',
'산청',
'성산',
'양산',
'의령',
'의창',
'진주',
'진해',
'창녕',
'창원',
'통영',
'하동',
'함안',
'함양',
'합천',
'경산',
'경주',
'고령',
'구미',
'군위',
'김천',
'남',
'문경',
'봉화',
'북',
'상주',
'성주',
'안동',
'영덕',
'영양',
'영주',
'영천',
'예천',
'울릉',
'울진',
'의성',
'청도',
'청송',
'칠곡',
'포항',
'광주 광산',
'광주 남구',
'광주 동구',
'광주 북구',
'광주 서구',
'대구 남구',
'대구 달서',
'대구 달성',
'대구 동구',
'대구 북구',
'대구 서구',
'대구 수성',
'대구 중구',
'대전 대덕',
'대전 동구',
'대전 서구',
'대전 유성',
'대전 중구',
'부산 강서',
'부산 금정',
'부산 기장',
'부산 남구',
'부산 동구',
'부산 동래',
'부산 부산진',
'부산 북구',
'부산 사상',
'부산 사하',
'부산 서구',
'부산 수영',
'부산 연제',
'부산 영도',
'부산 중구',
'부산 해운대',
'서울 강남',
'서울 강동',
'서울 강북',
'서울 강서',
'서울 관악',
'서울 광진',
'서울 구로',
'서울 금천',
'서울 노원',
'서울 도봉',
'서울 동대문',
'서울 동작',
'서울 마포',
'서울 서대문',
'서울 서초',
'서울 성동',
'서울 성북',
'서울 송파',
'서울 양천',
'서울 영등포',
'서울 용산',
'서울 은평',
'서울 종로',
'서울 중구',
'서울 중랑',
'세종',
'울산 남구',
'울산 동구',
'울산 북구',
'울산 울주',
'울산 중구',
'인천 강화',
'인천 계양',
'인천 남구',
'인천 남동',
'인천 동구',
'인천 부평',
'인천 서구',
'인천 연수',
'인천 옹진',
'인천 중구',
'강진',
'고흥',
'곡성',
'광양',
'구례',
'나주',
'담양',
'목포',
'무안',
'보성',
'순천',
'신안',
'여수',
'영광',
'영암',
'완도',
'장성',
'장흥',
'진도',
'함평',
'해남',
'화순',
'고창',
'군산',
'김제',
'남원',
'덕진',
'무주',
'부안',
'순창',
'완산',
'완주',
'익산',
'임실',
'장수',
'전주',
'정읍',
'진안',
'서귀포',
'제주',
'계룡',
'공주',
'금산',
'논산',
'당진',
'동남',
'보령',
'부여',
'서북',
'서산',
'서천',
'아산',
'예산',
'천안',
'청양',
'태안',
'홍성',
'괴산',
'단양',
'보은',
'상당',
'서원',
'영동',
'옥천',
'음성',
'제천',
'증평',
'진천',
'청원',
'청주',
'충주',
'흥덕']
- 행정구 실행 전이라 tmp_gu_dict 해당 지역의 경우 아직 적용이 덜 된 것을 볼 수 있다. (ex.포항 남구 --> '남' 등)
(2) 행정구
for idx,row in pop.iterrows():
if row["광역시도"][-3:] not in ["광역시", "특별시", "자치시"]:
for keys, values in tmp_gu_dict.items():
if row["시도"] in values:
if len(row["시도"]) == 2:
si_name[idx] = keys + " " + row["시도"]
elif row["시도"] in ["마산합포구", "마산회원구"]:
si_name[idx] = keys + " " + row["시도"][2:-1]
else:
si_name[idx] = keys + " " + row["시도"][:-1]
si_name
['강릉',
'고성',
'동해',
'삼척',
'속초',
'양구',
'양양',
'영월',
'원주',
'인제',
'정선',
'철원',
'춘천',
'태백',
'평창',
'홍천',
'화천',
'횡성',
'가평',
'고양',
'과천',
'광명',
'광주',
'구리',
'군포',
'수원 권선',
'고양 기흥',
'김포',
'남양주',
'안산 단원',
'일산 덕양',
'동두천',
'안양 동안',
'안양 만안',
'부천',
'성남 분당',
'안산 상록',
'성남',
'부천 소사',
'수원',
'성남 수정',
'고양 수지',
'시흥',
'안산',
'안성',
'안양',
'양주',
'양평',
'여주',
'연천',
'수원 영통',
'오산',
'부천 오정',
'용인',
'부천 원미',
'의왕',
'의정부',
'이천',
'일산 일산동',
'일산 일산서',
'수원 장안',
'성남 중원',
'고양 처인',
'파주',
'수원 팔달',
'평택',
'포천',
'하남',
'화성',
'거제',
'거창',
'고성',
'김해',
'남해',
'창원 합포',
'창원 회원',
'밀양',
'사천',
'산청',
'창원 성산',
'양산',
'의령',
'창원 의창',
'진주',
'창원 진해',
'창녕',
'창원',
'통영',
'하동',
'함안',
'함양',
'합천',
'경산',
'경주',
'고령',
'구미',
'군위',
'김천',
'포항 남구',
'문경',
'봉화',
'포항 북구',
'상주',
'성주',
'안동',
'영덕',
'영양',
'영주',
'영천',
'예천',
'울릉',
'울진',
'의성',
'청도',
'청송',
'칠곡',
'포항',
'광주 광산',
'광주 남구',
'광주 동구',
'광주 북구',
'광주 서구',
'대구 남구',
'대구 달서',
'대구 달성',
'대구 동구',
'대구 북구',
'대구 서구',
'대구 수성',
'대구 중구',
'대전 대덕',
'대전 동구',
'대전 서구',
'대전 유성',
'대전 중구',
'부산 강서',
'부산 금정',
'부산 기장',
'부산 남구',
'부산 동구',
'부산 동래',
'부산 부산진',
'부산 북구',
'부산 사상',
'부산 사하',
'부산 서구',
'부산 수영',
'부산 연제',
'부산 영도',
'부산 중구',
'부산 해운대',
'서울 강남',
'서울 강동',
'서울 강북',
'서울 강서',
'서울 관악',
'서울 광진',
'서울 구로',
'서울 금천',
'서울 노원',
'서울 도봉',
'서울 동대문',
'서울 동작',
'서울 마포',
'서울 서대문',
'서울 서초',
'서울 성동',
'서울 성북',
'서울 송파',
'서울 양천',
'서울 영등포',
'서울 용산',
'서울 은평',
'서울 종로',
'서울 중구',
'서울 중랑',
'세종',
'울산 남구',
'울산 동구',
'울산 북구',
'울산 울주',
'울산 중구',
'인천 강화',
'인천 계양',
'인천 남구',
'인천 남동',
'인천 동구',
'인천 부평',
'인천 서구',
'인천 연수',
'인천 옹진',
'인천 중구',
'강진',
'고흥',
'곡성',
'광양',
'구례',
'나주',
'담양',
'목포',
'무안',
'보성',
'순천',
'신안',
'여수',
'영광',
'영암',
'완도',
'장성',
'장흥',
'진도',
'함평',
'해남',
'화순',
'고창',
'군산',
'김제',
'남원',
'전주 덕진',
'무주',
'부안',
'순창',
'전주 완산',
'완주',
'익산',
'임실',
'장수',
'전주',
'정읍',
'진안',
'서귀포',
'제주',
'계룡',
'공주',
'금산',
'논산',
'당진',
'천안 동남',
'보령',
'부여',
'천안 서북',
'서산',
'서천',
'아산',
'예산',
'천안',
'청양',
'태안',
'홍성',
'괴산',
'단양',
'보은',
'청주 상당',
'청주 서원',
'영동',
'옥천',
'음성',
'제천',
'증평',
'진천',
'청주 청원',
'청주',
'충주',
'청주 흥덕']
(3) 고성군
for idx,row in pop.iterrows():
if row["광역시도"][-3:] not in ["광역시", "특별시", "자치시"]:
if row["시도"][:-1] == "고성" and row["광역시도"] == "강원도":
si_name[idx] = "고성(강원)"
elif row["시도"][:-1] =="고성" and row["광역시도"] =="경상남도":
si_name[idx] = "고성(경남)"
si_name
['강릉',
'고성(강원)',
'동해',
'삼척',
'속초',
'양구',
'양양',
'영월',
'원주',
'인제',
'정선',
'철원',
'춘천',
'태백',
'평창',
'홍천',
'화천',
'횡성',
'가평',
'고양',
'과천',
'광명',
'광주',
'구리',
'군포',
'수원 권선',
'고양 기흥',
'김포',
'남양주',
'안산 단원',
'일산 덕양',
'동두천',
'안양 동안',
'안양 만안',
'부천',
'성남 분당',
'안산 상록',
'성남',
'부천 소사',
'수원',
'성남 수정',
'고양 수지',
'시흥',
'안산',
'안성',
'안양',
'양주',
'양평',
'여주',
'연천',
'수원 영통',
'오산',
'부천 오정',
'용인',
'부천 원미',
'의왕',
'의정부',
'이천',
'일산 일산동',
'일산 일산서',
'수원 장안',
'성남 중원',
'고양 처인',
'파주',
'수원 팔달',
'평택',
'포천',
'하남',
'화성',
'거제',
'거창',
'고성(경남)',
'김해',
'남해',
'창원 합포',
'창원 회원',
'밀양',
'사천',
'산청',
'창원 성산',
'양산',
'의령',
'창원 의창',
'진주',
'창원 진해',
'창녕',
'창원',
'통영',
'하동',
'함안',
'함양',
'합천',
'경산',
'경주',
'고령',
'구미',
'군위',
'김천',
'포항 남구',
'문경',
'봉화',
'포항 북구',
'상주',
'성주',
'안동',
'영덕',
'영양',
'영주',
'영천',
'예천',
'울릉',
'울진',
'의성',
'청도',
'청송',
'칠곡',
'포항',
'광주 광산',
'광주 남구',
'광주 동구',
'광주 북구',
'광주 서구',
'대구 남구',
'대구 달서',
'대구 달성',
'대구 동구',
'대구 북구',
'대구 서구',
'대구 수성',
'대구 중구',
'대전 대덕',
'대전 동구',
'대전 서구',
'대전 유성',
'대전 중구',
'부산 강서',
'부산 금정',
'부산 기장',
'부산 남구',
'부산 동구',
'부산 동래',
'부산 부산진',
'부산 북구',
'부산 사상',
'부산 사하',
'부산 서구',
'부산 수영',
'부산 연제',
'부산 영도',
'부산 중구',
'부산 해운대',
'서울 강남',
'서울 강동',
'서울 강북',
'서울 강서',
'서울 관악',
'서울 광진',
'서울 구로',
'서울 금천',
'서울 노원',
'서울 도봉',
'서울 동대문',
'서울 동작',
'서울 마포',
'서울 서대문',
'서울 서초',
'서울 성동',
'서울 성북',
'서울 송파',
'서울 양천',
'서울 영등포',
'서울 용산',
'서울 은평',
'서울 종로',
'서울 중구',
'서울 중랑',
'세종',
'울산 남구',
'울산 동구',
'울산 북구',
'울산 울주',
'울산 중구',
'인천 강화',
'인천 계양',
'인천 남구',
'인천 남동',
'인천 동구',
'인천 부평',
'인천 서구',
'인천 연수',
'인천 옹진',
'인천 중구',
'강진',
'고흥',
'곡성',
'광양',
'구례',
'나주',
'담양',
'목포',
'무안',
'보성',
'순천',
'신안',
'여수',
'영광',
'영암',
'완도',
'장성',
'장흥',
'진도',
'함평',
'해남',
'화순',
'고창',
'군산',
'김제',
'남원',
'전주 덕진',
'무주',
'부안',
'순창',
'전주 완산',
'완주',
'익산',
'임실',
'장수',
'전주',
'정읍',
'진안',
'서귀포',
'제주',
'계룡',
'공주',
'금산',
'논산',
'당진',
'천안 동남',
'보령',
'부여',
'천안 서북',
'서산',
'서천',
'아산',
'예산',
'천안',
'청양',
'태안',
'홍성',
'괴산',
'단양',
'보은',
'청주 상당',
'청주 서원',
'영동',
'옥천',
'음성',
'제천',
'증평',
'진천',
'청주 청원',
'청주',
'충주',
'청주 흥덕']
pop["ID"] = si_name
pop
|
광역시도 |
시도 |
20-39세남자 |
20-39세여자 |
20-39세합계 |
65세 이상남자 |
65세 이상여자 |
65세 이상합계 |
인구수남자 |
인구수여자 |
인구수합계 |
소멸 비율 |
소멸 위기 지역 |
ID |
0 |
강원도 |
강릉시 |
26286.0 |
23098.0 |
49384.0 |
15767.0 |
21912.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
1.226041 |
False |
강릉 |
1 |
강원도 |
고성군 |
4494.0 |
2529.0 |
7023.0 |
2900.0 |
4251.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
0.707314 |
True |
고성(강원) |
2 |
강원도 |
동해시 |
11511.0 |
9753.0 |
21264.0 |
6392.0 |
8732.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
1.289738 |
False |
동해 |
3 |
강원도 |
삼척시 |
8708.0 |
7115.0 |
15823.0 |
5892.0 |
8718.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
0.973990 |
True |
삼척 |
4 |
강원도 |
속초시 |
9956.0 |
8752.0 |
18708.0 |
5139.0 |
7613.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
1.372647 |
False |
속초 |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
259 |
충청북도 |
진천군 |
9391.0 |
7622.0 |
17013.0 |
4731.0 |
6575.0 |
11306.0 |
36387.0 |
33563.0 |
69950.0 |
1.348311 |
False |
진천 |
260 |
충청북도 |
청원구 |
32216.0 |
27805.0 |
60021.0 |
8417.0 |
11914.0 |
20331.0 |
97006.0 |
93807.0 |
190813.0 |
2.735232 |
False |
청주 청원 |
261 |
충청북도 |
청주시 |
128318.0 |
115719.0 |
244037.0 |
37882.0 |
53671.0 |
91553.0 |
419323.0 |
415874.0 |
835197.0 |
2.527913 |
False |
청주 |
262 |
충청북도 |
충주시 |
26600.0 |
22757.0 |
49357.0 |
14407.0 |
20383.0 |
34790.0 |
104877.0 |
103473.0 |
208350.0 |
1.308249 |
False |
충주 |
263 |
충청북도 |
흥덕구 |
40933.0 |
37675.0 |
78608.0 |
9788.0 |
13671.0 |
23459.0 |
127647.0 |
125916.0 |
253563.0 |
3.211987 |
False |
청주 흥덕 |
264 rows × 14 columns
del pop["20-39세남자"]
del pop["65세 이상남자"]
del pop["65세 이상여자"]
pop.head()
|
광역시도 |
시도 |
20-39세여자 |
20-39세합계 |
65세 이상합계 |
인구수남자 |
인구수여자 |
인구수합계 |
소멸 비율 |
소멸 위기 지역 |
ID |
0 |
강원도 |
강릉시 |
23098.0 |
49384.0 |
37679.0 |
106231.0 |
107615.0 |
213846.0 |
1.226041 |
False |
강릉 |
1 |
강원도 |
고성군 |
2529.0 |
7023.0 |
7151.0 |
15899.0 |
14215.0 |
30114.0 |
0.707314 |
True |
고성(강원) |
2 |
강원도 |
동해시 |
9753.0 |
21264.0 |
15124.0 |
47166.0 |
46131.0 |
93297.0 |
1.289738 |
False |
동해 |
3 |
강원도 |
삼척시 |
7115.0 |
15823.0 |
14610.0 |
35253.0 |
34346.0 |
69599.0 |
0.973990 |
True |
삼척 |
4 |
강원도 |
속초시 |
8752.0 |
18708.0 |
12752.0 |
40288.0 |
41505.0 |
81793.0 |
1.372647 |
False |
속초 |