2015년 7월 30일 목요일

행정구역 단위 총인구 변화 조사 ( 2013년 ~ 2014년 )

"지역 별로 인구 증가가 어떨까?"라는 주제는 가지고, 통계자료를 구하고, 시각화하는 과정을 소개한다.

1. KOSIS에서 행정구역(시군구)별 최근 기간(2013 ~ 2014년) 자료를 수집한다.

* 인코딩 문제로 맥북에서 작업 할때는 언어를 영어로 출력해서 작업하거나,
출력 화면 테이블을 클립보드에 복사해서, Numbers 같은 툴에서 작업하면 된다.
필자는 Numbers에서 2014년 인구에서 2013년 인구의 차이를 미리 구했다.

2. 인구 변화를 표현할 지도 자료를 구한다.

* 참고 링크 : https://commons.wikimedia.org/wiki/File:Administrative_divisions_map_of_South_Korea.svg
* 행정구역 이름이 한글로 잘 정리 되어 있어서, 선택하게 되었다.

자료 준비는 이것으로 완료 되었고, 나머지는 파이톤 노트에서 시각화 하는 과정을 소개 한다.

3. 가중치에 따른 온도 색으로 지도 공간 시각화 하기

사용할 라이브러리 로딩
In [1]:
from bs4 import BeautifulSoup
from IPython.display import SVG
import pandas as pd
증감 수치를 온도에 따른 색으로 분류
In [2]:
# 온도 순서대로 10가지 색상 코드 (필자 선정)
color_temper = ['#0000FF', '#3366FF', '#3399FF',\
                '#66CCFF', '#99FFFF', '#FFCC99',\
                '#FF9966', '#FF6633', '#FF6600', '#FF3300']

# 자료에서 인구 증감 순서에 따라 10가지로 분류하고, 색상 라벨 지정
df = pd.read_csv('people_2014-2013.csv')
df['색깔'] = pd.qcut( df['증감'] , 10,labels=color_temper)
SVG 이미지에서 각 행정구역(시군구)의 체우기(fill) 색을 갱신
In [3]:
# SVG 이미지를 파서로 로딩
svg = BeautifulSoup(open('south_korea.svg','r').read(),'html.parser')

# 시군구가 일치하는 오브젝트의 기본 색상을 분류되어진 색상으로 체우기
for id,inc,color in df.values:
    if svg.find('g',{'id':id}):
        for sub in svg.find('g',{'id':id}).find_all('path'):
            sub['fill'] = color
    if svg.find('path',{'id':id}):
        svg.find('path',{'id':id})['fill'] = color
인구 증감 (색상 레드 > 블루)별로 색칠된 SVG 이미지 출력
In [4]:
SVG(svg.__str__())
* 서울에서 경기도 권역으로 인구이동 추정
* 세종시 주변과 제주도에 다수의 인구 유입
* 부산의 중심이 남포동에서 서면으로 이동 추정

지리 시각화 관련해서 통계 지리 정보 서비스가 2015년 4월 27일부터 시범서비스를 오픈했다.
* http://sgis.kostat.go.kr
왜 시범서비스인지를 금방 알게 될 것이다.
Anyway, 알리바바의 마윈이 말한 IT를 넘어선 DT 시대를 준비하고 있는 모습은 매우 반갑다.


0 개의 댓글:

댓글 쓰기