Python

파이썬 데이터 주무르기 5장 우리나라 인구 소멸 위기 지역 분석

Ethan_hyk 2023. 10. 31. 11:09
반응형

1. 목표

이상호 한국고용정보원 연구원의 <한국의 지방소멸에 관한 7가지 분석>이라는 보고서에서 사용한 방법

인구 소멸 지역 정의: 65세 이상 노인 인구(A)와 20 - 39세 여성 인구(B)를 비교해 B < A/2(A절반) 경우

2. 데이터 입력 및 전처리

데이터 입력은 아래 데이터에서 받아 공통적으로 사용합니다.

https://github.com/PinkWink/DataScience/tree/master/data

데이터 명: 05. population_raw_data.xlsx

 

데이터를 입력받은 후 아래코드와 같이 전처리합니다.

전처리 내용

  • 엑셀의 2번째 줄부터 Read
  • 빈셀에 대해 앞의 내용으로 채움(ffill을 사용)
  • 컬럼명 변경
  • '시도'컬럼에서 소계값 제거
  • '구분'컬럼에서 총인구수 -> 합계, 남자인구수 -> 남자, 여자인구수 -> 여자 로 값 변경
population = pd.read_excel('../data/05. population_raw_data.xlsx', header=1)
population.head()
population.ffill(inplace=True)
population.rename(columns={
    '행정구역(동읍면)별(1)' : '광역시도',
    '행정구역(동읍면)별(2)' : '시도',
    '계' : '인구수'
},inplace=True)
population = population[population['시도'] != '소계']
population.head()
population.rename(columns={'항목':'구분'},inplace=True)
population.loc[population['구분']=='총인구수 (명)','구분'] = '합계'
population.loc[population['구분'] == '남자인구수 (명)','구분'] = '남자'
population.loc[population['구분'] == '여자인구수 (명)','구분'] = '여자'
population.head()

=>

3. 인구 소멸 위기 지역 계산하고 데이터 정리하기

1번에서 인구 소멸 지역의 정의대로라면 20-30대 인구와 65세 이상 인구를 찾아야합니다.

계산을 통해 아래 코드와 같이 정리합니다.

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.head()

=>

불필요한 컬럼은 제외하고 필요한 컬럼들로 Pivot 시키겠습니다.

광역시도별,시도별로(Index), 남자,여자, 합계 구분이 되도록(columns=['구분']), 원하는 값은 20-39세 , 65세 이상, 인구수 컬럼으로 Pivot

pop = pd.pivot_table(population, index=['광역시도', '시도'], columns=['구분'], values=['20-39세','65세이상','인구수'])
pop

=>

그 이후, 소멸 비율을 지표를 만들어 줍니다.

B<A/2 이면 소멸위기지역 입니다. 따라서, B / (A/2) < 1 이면 소멸위기지역입니다. 왼쪽면에 해당 하는 값을 소멸비율이라는 지표로 만듭니다.

pop['소멸비율'] = pop['20-39세','여자'] / (pop['65세이상','합계'] / 2) # 20-39세 여자(B) 65세이상(A) => B/(A/2)
pop

=>

이후, 소멸위기지역인지를 확인하기 위해 해당하는 컬럼을 생성해줍니다.그리고 소멸비율로 어느 지역이 가장 소멸위기지역인지를 확인하기 위해 정렬해줍니다.

pop['소멸위기지역'] = pop['소멸비율'] < 1.0 #소멸비율이 1보다 작으면 소멸위기지역
pop = pop.sort_values(by='소멸비율',ascending=True)
pop

=> 가장 소멸위기인 지역은 의성군입니다. 그 다음으로 고흥군, 군위군, 남해군 순입니다. 

소멸위기지역인 시도만 보기 위해서 시도값인 index값에서 불러옵니다. 하지만, 아래 그림을 보시면 우리가 Pivot으로 2개 컬럼을 index로 설정했기 때문에 MultiIndex로 되어있습니다.
위에서 우리가 원하는 2번째 값을 얻기 위해서 get_level_values()를 사용해주면 원하는 index컬럼을 가져올 수 있습니다.

pop[pop['소멸위기지역'] == True].index.get_level_values(1)

=> 소멸위기지역으로 의성군, 고흥군, 군위군 등이 보이네요.

추가적으로, 소멸위기지역 시도에 해당하는 광역시도의 현황은 어떻게 되는지를 알아보겠습니다.

pop[pop['소멸위기지역'] == True].index.get_level_values(0).value_counts()

=> value_counts()를 통해 값마다 카운팅을 해주었고, 결과 경상북도와 전라남도가 소멸위기 광역시도라고 나타났습니다.

이상입니다.

 

책의 내용으로는 이제 해당 지역들을 Folium과 Cartogram으로 매핑하여 시각화를 하게됩니다.

하지만 해당 책에서는 주로 데이터를 다루는 과정까지만 하고 시각화는 다른 책으로 정보를 남기도록 하겠습니다.

 

 

 

 

 

본 내용은 파이썬으로 데이터 주무르기-민형기 책에서 공부한 내용을 바탕으로 작성한 글입니다.