본문 바로가기

About 배우고 익히는법/Python

국가통계포털(KOSIS) 시도별 인구이동 분석 ① 자료 검색 및 저장 (pandas) [출처] [파이썬 데이터 분석] 국가통계포털(KOSIS) 시도별 인구이동 분석 ① 자료 검색 및 저장 (pandas)

통계청이 제공하는 국가통계포털(KOSIS)을 활용하는 방법을 소개합니다. 파이썬 Pandas 라이브러리를 주로 이용하여 데이터를 수집, 저장하고 분석하는 과정을 간단한 예제와 함께 풀어보려고 합니다. 오늘은 국가통계포털(KOSIS)에서 자료를 찾고, 필요한 검색조건을 적용하여 CSV파일로 저장하는 방법과 pandas dataframe으로 변환하는 방법을 알아보겠습니다. 

국가통계포털(http://kosis.kr/index/index.do)에 홈페이지에 접속하여 필요한 통계정보를 검색하거나 통계분류표를 통해서 찾을 수 있습니다. 오늘은 "전출지/전입지(시도)별 이동자수" 자료를 찾아서 저장해보겠습니다. 

시도별 인구 이동자 수를 검색하는 조건을 지정하여 조회하거나 다운로드할 수 있는데요. 시도별 전출자 수와 전입자 수를 차감한 '순이동자 수'는 제외하고, 실제 전출입 인구를 확인할 수 있는 '이동자 수'만 선택합니다.

국가통계포털(KOSIS) 시도별 인구이동 분석

전출지는 모든 행정구역에 대한 자료를 받을 수 있도록 '전체선택' 을 체크합니다.

국가통계포털(KOSIS) 시도별 인구이동 분석

전입지에 대해서도 전출지와 마찬가지로  '전체선택' 을 체크합니다.

국가통계포털(KOSIS) 시도별 인구이동 분석

자료를 추출하는 시점을 선택합니다. 연간 데이터를 기준으로 1970년 ~ 2017년으로 설정합니다.

국가통계포털(KOSIS) 시도별 인구이동 분석

통계표 조회 버튼을 누르면 선택한 통계자료를 볼 수 있고, 다운로드 버튼을 다시 누르면 저장하려는 파일 유형을 선택하는 화면이 나옵니다. EXCEL, CSV, TXT 등 파일 유형을 선택 가능하지만, 우리는 CSV 파일 유형을 선택하여 다운로드하겠습니다.

국가통계포털(KOSIS) 시도별 인구이동 분석

저장한 파일을 마이크로소프트 엑셀 프로그램으로 열어 보면, 아래와 같이 나타납니다. 다른 이름으로 저장하기 버튼을 눌러서 파일 이름을 변경하겠습니다.

시도별 인구이동 분석 (파이썬 판다스 - pandas)

아래와 같이 "1_population_migration_data"로 파일 이름을 입력하여 주고, 파일 형식을 "CSV UTF-8(쉼표로 분리)"를 선택한 후에 저장 버튼을 누릅니다.

시도별 인구이동 분석 (파이썬 판다스 - pandas)

파이썬 에디터(저는 Spyder를 사용하고 있습니다)를 사용하여 파일을 열어서 확인해 보면, 아래와 같이 쉼표(,)로 구분되어 자료가 정리된 것을 볼 수 있습니다. 2번째 행(row)에 있는 "전출지별, 전입지별, 이동자수 (명), ...." 데이터는 쓸모가 없기 때문에 삭제하겠습니다. 엑셀에서 삭제하여 저장하는 방법도 있지만, 파이썬 pandas 라이브러리로 파일을 불러와서 삭제하는 방법을 사용하겠습니다.

시도별 인구이동 분석 (파이썬 판다스 - pandas)
[파이썬 예제]

# Pandas 라이브러리를 네임스페이스 pd라고 지정하여 불러온다
import pandas as pd

# file의 폴더 위치 또는 다운로드 url을 입력한다 (여기서는 폴더위치 입력)
file_path = "./1_population_migration_data.csv"

# file_path를 read_csv의 함수 인자로 전달하여 pandas 데이터프레임으로 저장한다
df = pd.read_csv(file_path)

# index 0인 열(row)을 삭제한다
df = df.drop(0, axis=0)

# index를 0부터 재설정한다
df.reset_index(inplace=True)

# 변경된 데이터프레임을 csv 파일로 저장한다
df.to_csv("./1_population_migration_data_revised.csv")

새롭게 정리하여 저장한 csv 파일을 열어서 확인해 보면, 아래처럼 2번째 행이 제거되고, index값도 0부터 새롭게 정리된 것을 확인할 수 있습니다.  

시도별 인구이동 분석 (파이썬 판다스 - pandas)

위 데이터는 시도별 전출지와 전입지가 모두 들어가 있기 때문에 자료 분석하기가 만만치 않습니다. 따라서, 특정 지역을 선택하여 분석의 목적을 단순하게 할 필요가 있습니다. 서울특별시를 전입지로 하는 데이터 행(row)열만 따로 선택해볼까 합니다. 

# 서울로 진입하는 인구 이동수 데이터만 따로 저장한다
df_seoul = df[df['전입지별'] == "서울특별시"]

여기서 df['전입지별'] == "서울특별시" 라는 조건을 만족하는 데이터만 선택하여 df_seoul 변수에 저장합니다. df['전입지별']은 '전입지별'이라는 컬럼 명을 가진 열(column)을 뜻하고, 개별 값이 "서울특별시"와 같으면 True, 다르면 False값을 반환합니다. df 데이터프레임 중에서 True값인 데이터만 남기는 원리입니다.

df_seoul.head( )와 같이 판다스 head( ) 메소드를 사용하면, 아래와 같이 df_seoul 데이터프레임의 첫 5 행(row)을 출력합니다. 전입지별 열(column)에 "서울특별시" 값만 남는 것을 확인할 수 있습니다.

파이썬 판다스 head() - 시도별 인구 데이터

다음에는 서울특별시로 전입하는 시도별 인구 데이터를 가지고, 파이썬 판다스(pandas) 라이브러리 활용방법을 여러 가지 실행해 보겠습니다.