GIS

GeoPandas를 이용한 '깃대종' 지역별 기사건수 지도화

유병혁 2019. 9. 6. 11:44

안녕하세요? 이번 글은 GeoPandas를 이용한 '깃대종' 지역별 기사건수 지도화 과정을 정리해 보겠습니다.

학습 자료로는 빅카인즈(https://www.bigkinds.or.kr/)에서 수집한 '깃대종' 언급 뉴스 데이터를 사용합니다.


이전 글:

[1] 빅카인즈 뉴스 데이터를 이용한 '깃대종' 통계 가시화 | http://blog.daum.net/geoscience/1406

[2] 빅카인즈 뉴스 데이터를 이용한 '깃대종' 연관규칙 분석 | http://blog.daum.net/geoscience/1407

[3] NetworkX 파이썬 패키지를 이용한 네트워크 그래프 작성 | http://blog.daum.net/geoscience/1408


GeoPandas는 파이썬에서 지리공간 데이터를 보다 쉽게 다룰 수 있는 오픈소스 프로젝트입니다.

기존의 Pandas 데이터 유형에 지오메트리를 추가함으로써 확장된 기능을 사용하실 수 있습니다.

공식 홈페이지 | http://geopandas.org/


GeoPandas와 관련해서는 전상환님의 깃허브 자료를 추천 드립니다. PyCon Korea 2019에서 'Python으로

지리공간데이터 다루기' 주제를 발표해 주셨으며, 해당 연습코드를 깃허브를 통해 공유해주고도 계십니다.

전상환님 Geopandas 연습코드 깃허브 | https://github.com/rollinstar/gpd_example



그럼 GeoPandas를 설치해 보겠습니다. GeoPandas 설치 | http://geopandas.org/install.html

GeoPandas 설치는 conda 패키지 매니저 이용을 권장하고 있습니다.


conda 사용자가 아니신 분들은 whl을 통해 의존성 라이브러리들을 설치해주시면 됩니다.

Unofficial Windows Binaries for Python Extension Packages | https://www.lfd.uci.edu/~gohlke/pythonlibs/


직접 확인해보니 shapely, GDAL, Fiona, pyproj 패키지를 사전에 설치해주셔야 합니다.


conda의 장점 중 하나는 호환성이 검증된 패키지들을 하나로 제공하는 부분이 아닐까 생각됩니다.

예컨데 Fiona는 GDAL 3 버전이 아직 지원되지 않습니다. Fiona 깃허브 https://github.com/Toblerity/Fiona


GeoPandas 설치를 마쳤으면 라이브러리를 추가해 보겠습니다.


빅카인즈 뉴스 데이터를 열고 언론사 목록을 확인해 보겠습니다.


아래와 같이 빅카인즈는 총 54개 언론사(중앙지, 경제지, 지역종합지, 방송사, 전문지) 데이터를 제공하고 있습니다.


언론사별 '깃대종' 기사건수를 추출해 봤습니다. 깃대종 기사가 가장 많은 언론사는 중도일보입니다.

앞서 단어빈도 분석에서 대전이 51회, 대전시가 35회 출현했는데 지역언론의 역할을 알 수 있습니다. 


언론사별 깃대종 기사건수를 바 플롯으로 표현해 봤습니다.



이번에는 GeoPandas를 통해 우리나라 시도경계 쉐이프파일을 연결해 보겠습니다. 해당 데이터는

GADM을 사용했습니다. 전세계 국가 및 구역별 공간데이터 제공 'GADM' 소개 | http://blog.daum.net/geoscience/1257


시도경계를 지도화한 결과입니다. 아래와 같이 Pandas 문법이 GeoPandas에서도 적용됩니다. 편리하죠?!



지도는 준비되었으니 속성을 정제해 보도록 하겠습니다. 언론사별 시도를 아래와 같이 정의해봅니다. 시도 분류는 기본적으로

빅카인즈의 대분류를 따르며, 두 개 이상 시도가 연관된 언론사(예: 경인일보는 경기도, 인천)는 본사 위치를 기준으로 하였습니다.   


이제 시도별 기사건수를 산출할 수 있습니다. 서울, 대전, 전라북도 순으로 깃대종 기사가 많음을 확인해 봅니다.


아래와 같이 시도경계에 기사건수 컬럼을 결합했습니다. 이제 지도화를 해볼 수 있겠죠?!


시도별 기사건수를 지도화한 결과입니다. 사분위수(quantiles)를 통해 지역별 깃대종 기사건수를 대비해 봤습니다.