인구분석

Binny·2023년 5월 18일
0
post-thumbnail

인구분석

1. 배경

  • 목표
    : 인구 소멸 위기 지역 파악
    : 인구 소멸 위기 지역의 지도 표현
    : 지도 표현 => 카르토그램

2. 데이터 읽고 인구 소멸 지역 계산하기

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import set_matplotlib_hangul
# import warnings

# warnings.filterwarnings(action="ignore")
%matplotlib inline

1) fillna() 옵션 알아보기

datas = {
    "A" : np.random.randint(1, 45, 7),
    "B" : np.random.randint(1, 45, 7),
    "C" : np.random.randint(1, 45, 7),
}
datas


=>

{'A': array([12,  9,  5, 44, 30, 23,  9]),
 'B': array([31,  6, 40,  2,  4, 36,  5]),
 'C': array([20, 39, 42, 23,  4,  8,  9])}
  • fillna_df = pd.DataFrame(datas)
    fillna_df
  • fillna_df.loc[2:4, ["A"]] = np.nan
    fillna_df.loc[3:5, ["B"]] = np.nan
    fillna_df.loc[4:6, ["C"]] = np.nan
    fillna_df

  • 기본값(method) : value = 원하는 숫자
    fillna_df.fillna(method="pad") # 바로 앞 데이터로 채워주기 = "ffill"
    fillna_df.fillna(method="backfill") 뒤 데이터로 채워주기 / 반드시 뒤에 데이터가 있어야함

2) 인구 분석 실습

population = pd. read_excel("../data/07_population_raw_data.xlsx", header=1)
population.fillna(method="pad", inplace=True)  # 컬럼의 NaN값 없애기
population.head(5)
  • 컬럼 이름 변경
population.rename(
    columns = {
        "행정구역(동읍면)별(1)" : "광역시도",
        "행정구역(동읍면)별(2)" : "시도",
        "계" : "인구수"
    }, inplace=True
)

population.head()
  • 소계 제거
population = population[population["시도"] != "소계"]
population.head()
  • 항목 컬럼을 구분으로 변경
population.is_copy = False
population.rename(
    columns ={ "항목" : "구분" }, inplace=True
)

population.head()
  • population.loc[ 행 , 열 ]
population.loc[ population["구분"] == "총인구수 (명)" , "구분"] = "합계"
population.loc[ population["구분"] == "남자인구수 (명)" , "구분"] = "남자"
population.loc[ population["구분"] == "여자인구수 (명)" , "구분"] = "여자"
  • 소멸 지역을 조사하기 위한 데이터 : 나이 데이터 컬럼 추가
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+"]
)
코드를 입력하세요
  • pivot_table

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

pop

  • 소멸 비율 계산
pop["소멸비율"] = pop["20-39세", "여자"] / (pop["65세이상", "합계"] / 2)
pop.tail()
  • 소멸 위기 지역 컬럼 생성 (T/F 판단)
pop["소멸위기지역"] = pop["소멸비율"] < 1.0
pop
profile
물음표 말고 느낌표 !

0개의 댓글

관련 채용 정보