Seoul Population Dashboard

서울시 자치구별 인구 데이터 수집·정제·시각화 파이프라인

Python Pandas Power BI
01 Overview
기간2026.07
인원개인
역할데이터 수집·정제, Power BI 대시보드 설계 전체
주요 기술Python, Pandas, Power BI
GitHubsung-ju-park/-seoul-population-Public
02 Problem

데이터가 분석 가능한 형태로 만들어지는 과정을 직접 경험하고 싶었습니다

서울 열린데이터광장에서 제공하는 자치구별 인구 데이터를 API로 수집한 뒤, 정제 과정을 거쳐 Power BI로 시각화하는 파이프라인을 직접 구축하는 것이 목표였습니다. 단순히 수집·시각화로 끝내지 않고, 데이터 자체의 한계까지 다루는 것이 이 프로젝트의 핵심이었습니다.

03 My Role

My Contribution

  • 서울 열린데이터광장 API 연동 및 수집 스크립트(fetch_data.py) 작성
  • 정제 및 파생 컬럼(순위, 비중, 강남3구 여부) 계산 로직(process_data.py) 구현
  • 수집→정제를 한 번에 이어서 실행하는 파이프라인(run_pipeline.py) 추가
  • Power BI 대시보드 설계 및 시각화
04 Technical Challenge

수집된 데이터가 서울 25개 구 중 13개만 포함하고 있었습니다

이 상태에서 "강남3구 비중"을 13개 구 합계 기준으로 단순 계산하면, 도넛차트의 두 조각을 더해도 서울시 전체 인구가 되지 않아 보는 사람이 혼란스러울 수 있는 문제가 있었습니다.

13/25개 구 데이터 확보
→
강남3구 비중 단순 계산
→
도넛차트 합계 100% 붕괴
05 Solution

build_gangnam3_comparison() 함수에서 "데이터 미포함 자치구(12개)"를 별도 항목으로 명시적으로 계산해 포함시켰습니다. 그 결과 강남3구 / 데이터 포함 자치구 / 데이터 미포함 자치구, 세 조각의 합이 정확히 서울시 전체 인구와 일치하도록 설계했습니다.

도넛차트 합계 100% 붕괴
→
데이터 미포함 구 별도 산정
→
3분할 비교표 완성
06 Result

데이터의 한계를 감추지 않고 투명하게 보여주는 대시보드로 완성했습니다. 자치구 × 인구수 막대그래프와, 강남3구/포함구/미포함구 3분할 도넛차트를 함께 구성해 서울시 전체 인구와 정확히 일치하는 비교 구조를 만들었습니다.

Seoul Population Dashboard 화면

완성된 Power BI 대시보드 — 좌: 강남3구 3분할 비교, 우: 자치구별 인구 순위

07 Architecture
서울 열린데이터광장 Open API (또는 로컬 샘플 데이터)
↓
fetch_data.py — 원본 데이터 수집
↓
process_data.py — 정제 및 파생 컬럼 추가
↓
Power BI Desktop — 대시보드 시각화
08 GitHub
View on GitHub