인구 분석 (1)

Jungmin·2022년 10월 27일
1

데이터 분석

목록 보기
16/24
post-thumbnail

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
-엑셀 원본 파일 확인

-header =1로 설정해서 맨 윗줄 컬럼 (2016.1,2016.2..사용x)

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 데이터프레임에 NaN값을 채워넣는 옵션
fillna_df.fillna(value=1)  #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 데이터프레임에 NaN값을 채워넣는 옵션
fillna_df.fillna(method="pad") # NaN값이 있을 경우 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
#NaN 값 
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
# copy 했을 때 warning 발생 시 실행X
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
# pivot_table

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
# 소멸위기 지역인지 아닌지 True/False 로 구분지어주기 

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='시도')
# 광역시도가 index로 잡혀있어 데이터 프레임 안으로 광역시도 를 넣어주고 index 번호 생성
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)
# 빈 리스트 만들기 # len(pop) : 264개
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 ["광역시", "특별시", "자치시"]:  #마지막 3글자 (ex) 서울특별시 : '특별시')
        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 속초
profile
데이터분석 스터디노트🧐✍️

0개의 댓글