안녕하세요? 이번 글은 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)를 통해 지역별 깃대종 기사건수를 대비해 봤습니다.