최근 행정안전부가 운영하는 공공데이터포털의 개방 데이터 수는 해가 갈수록 눈에 띄게 증가하고 있다. 그러나 데이터의 양이 늘어난 만큼 질적인 측면에서의 고민도 함께 깊어지고 있다. 실제로 포털에서 내려받은 원본 파일을 열어보면 빈칸으로 남아 있는 결측치부터 터무니없는 수치를 기록한 이상치까지, 분석가의 인내심을 시험하는 요소가 한두 가지가 아니다. 특히 특정 지역의 현황을 지도 위에 표현하려 할 때, 이러한 데이터의 오류는 곧바로 시각적 왜곡으로 이어지기 쉽다. 이 글에서는 낡은 종이 기록을 디지털로 옮긴 듯한 원본 데이터를 분석용으로 재구성하고, 이를 지도 위에 올바르게 올리는 일련의 과정을 단계별로 살펴본다. 독자는 이 사례를 통해 단순히 도구를 다루는 법을 넘어, 데이터를 바라보는 태도 자체가 어떻게 달라져야 하는지를 확인하게 될 것이다.
먼저 이 분석의 출발점이었던 원본 데이터의 성격을 짚어볼 필요가 있다. 해당 자료는 전국 각 시군구의 연간 인구 이동 및 생활인구 추정치를 담고 있었는데, 엑셀 파일로 제공된 초기 형태는 분석에 바로 활용하기 어려운 상태였다. 여러 시트에 분산된 표 구조와 셀 병합, 그리고 한글과 숫자가 섞인 기이한 형식의 값들이 주요 장애물이었다. 예를 들어 인구 수를 나타내는 열에 ‘1,234명’처럼 쉼표와 단위가 포함되어 있거나, 특정 연도의 기록이 통째로 비어 있는 행이 수백 개에 달했다. 이 지점에서 엑셀 기초 데이터 정리 방법의 중요성이 부각된다. 텍스트 나누기 기능으로 단위 표기를 제거하고, 조건부 서식을 활용해 빈 셀의 위치를 빠르게 파악한 뒤, 이를 표준화된 숫자 형식으로 변환하는 작업이 순서대로 진행되었다. 셀 병합을 해제하고 각 행에 고유 식별자를 부여하는 과정도 필수적이었다. 단순해 보이는 이 단계들이 제대로 수행되지 않으면 이후의 모든 분석이 잘못된 기초 위에 세워지는 셈이다.
기본적인 정리 작업을 마친 뒤에는 본격적인 데이터 프로파일링에 들어갔다. 이 단계는 데이터 분석을 위한 통계 개념 정리가 실제 현장에서 어떻게 적용되는지를 보여주는 핵심 구간이다. 각 열의 평균, 중앙값, 표준편차를 산출하고, 분포의 형태를 대략적으로 파악하는 것에서 시작했다. 문제는 특정 지역의 인구수가 전년 대비 300% 이상 급증한 것으로 기록된 행이 존재한다는 점이었다. 단순한 오타일 가능성도 있었지만, 해당 지역의 행정 구역 개편이나 대규모 개발 사업 같은 외부 요인이 있었는지 교차 검증이 필요했다. 이때 주의할 점은 이상치를 무조건 삭제하는 것이 아니라, 그것이 실제 현상을 반영하는지 아니면 입력 오류인지를 구분하는 일이다. 이번 사례에서는 해당 수치가 지리적으로 인접한 다른 지역의 값과 유사한 패턴을 보인다는 점, 그리고 원본 문서의 주석에 데이터 입력 과정에서의 착오가 있었음을 암시하는 기록이 발견되어 이를 결측치로 처리한 후 재계산을 수행했다. 이처럼 통계적 개념을 단순히 수식으로만 접근하는 것이 아니라, 데이터가 생성된 맥락과 연결 지어 해석하는 것이 중요하다.
정제된 데이터를 실제 지도 위에 올리기 위해서는 공간 정보와의 결합이라는 또 다른 난관이 기다리고 있었다. 지도 시각화를 위해 시군구별 경계 좌표가 담긴 별도의 공간 파일을 준비했지만, 두 데이터 간의 연결 키가 되는 행정 코드의 형식이 서로 달랐다. 원본 데이터의 코드는 앞자리가 0으로 시작하는 10자리 숫자였던 반면, 공간 파일의 코드는 7자리였기 때문이다. 이 지점에서 SQL 쿼리 작성 기초가 해결책으로 등장했다. 좌측 정렬을 맞추기 위해 문자열 함수를 사용하여 코드의 앞부분을 절삭하고, 그룹화 함수로 지역별 집계 값을 다시 계산하는 방식으로 두 테이블을 성공적으로 연결했다. 만약 파이썬 판다스 입문 가이드를 참고했다면 데이터프레임 간 병합 작업을 수행했을 테지만, 이 사례에서는 대용량의 공간 데이터를 다루는 환경을 고려하여 데이터베이스 내에서의 전처리를 선택했다. 연결 과정에서 발생한 매칭 실패 건수는 전체의 1% 미만이었으며, 이는 행정 구역 명칭 표기의 사소한 차이에서 비롯된 것이었다. 이를 수작업으로 대조하고 수정하는 과정은 다소 번거로웠지만, 지도 위에 올라갈 데이터의 정확성을 보장하는 데 필수적인 절차였다.
모든 준비 과정이 끝난 후, 마침내 데이터 대시보드 만들기 팁을 활용한 최종 시각화 단계에 도달했다. 단순히 지도에 색상만 입힌 정적 이미지가 아닌, 시군구별 시간에 따른 변화를 확인할 수 있는 대시보드의 형태로 구축하는 것을 목표로 했다. 지도 위 색상의 농도는 인구 증감률을 나타내도록 설정하고, 특정 지역을 클릭하면 해당 지역의 상세 추이 그래프가 옆에 표시되도록 구성했다. 이 과정에서 핵심이었던 것은 시각적 인지 효율이었다. 너무 많은 색상 단계를 사용하면 오히려 비교가 어려워지므로, 연속형 스케일을 사용하되 값의 편차가 크게 벌어지는 것을 방지하기 위해 로그 변환을 적용했다. 또한 범례의 표기 방식을 정수형으로 고정하여 일반 사용자가 쉽게 해석할 수 있도록 했다. 데이터 분석 관련 자격증 소개가 다루는 내용처럼, 검증되지 않은 데이터를 잘 포장된 시각화 도구에 그대로 입력하는 것은 심각한 오류를 낳을 수 있다. 시각화 도구는 어디까지나 보조 수단일 뿐, 데이터 자체의 품질을 향상시키는 것은 전적으로 분석가의 몫임을 잊지 말아야 한다.
결국 이 사례가 시사하는 바는 명확하다. 공공데이터포털에서 받은 원본 데이터는 그 자체로 의미를 지니기보다, 분석 목적에 맞게 재해석되고 정제될 때 비로소 가치를 발휘한다. 결측치를 단순히 제거하는 것이 아니라 그 원인을 추적하고, 이상치를 무작정 버리는 대신 발생 배경을 탐구하는 태도가 우선되어야 한다. 엑셀 기초 정리에서 시작해 파이썬이나 SQL 같은 더 정교한 도구로 이어지는 과정은, 결국 데이터가 담고 있는 현실의 복잡성을 이해하기 위한 하나의 방법론일 뿐이다. 단순한 정보 전달을 넘어, 데이터를 둘러싼 오류와의 싸움은 분석가의 가장 기본적인 임무이며, 이 글이 그러한 싸움의 작은 기록으로 남기를 바란다. 지도 위에 점점이 찍힌 각 지역의 색상은 단순한 수치의 표현이 아니라, 수많은 오류를 수정하고 누락을 채워 넣은 노력의 시각적 증거다. 어떤 도구를 선택하든 중요한 것은 데이터를 있는 그대로 신뢰하지 않고, 항상 의심의 눈초리로 바라보는 성실함이다.