프로젝트 개요
대회명: SRI 데이터 경진대회 — 수원시 정책 아이디어 제안
주제: 공공데이터를 활용한 수원시 주차 문제 해소를 위한 정책 제언
인원: 3명
역할: 데이터 수집·전처리·시각화, 정책 제언 도출
수원시는 약 120만 명이 거주하는 경기도 최대 도시이자 삼성전자 본사가 위치한 산업 중심지이다. 그러나 급격한 도시화와 차량 증가로 인해 주차 문제가 시민 생활의 주요 민원으로 부상하고 있다.
문제의 크기는 수원시 도시정책지표에 그대로 드러난다. 등록 차량은 2014년 433,967대에서 2023년 569,460대로 9년간 31.2% 늘었고 같은 기간 주차장확보율(주차면수 ÷ 자동차등록대수)은 2022년 기준 73.3% — 차량 4대당 주차면이 3개도 되지 않는다.
본 프로젝트는 수원시가 공개한 시민 서베이 데이터와 주정차 위반 단속 데이터를 결합 분석하여, 데이터 기반의 실효성 있는 주차 정책을 제언하는 것을 목표로 하였다.
데이터 소개
분석에 활용한 데이터는 크게 세 가지이다.
1. 수원서베이 (시민 인식 조사)
수원시가 분기별로 실시하는 시민 패널 조사 데이터로, 교통·주거·생활환경 등 도시 전반에 대한 시민 인식을 담고 있다.
- 2023년 수원서베이 용역 데이터
- 2024년 3·4분기 패널조사 데이터 (가중치 포함)
- 2025년 1·2분기 패널조사 데이터 (가중치 포함)
2. 주정차 위반 단속 데이터 (공공데이터포털)
수원시 4개 구(장안구·권선구·팔달구·영통구)의 주정차 위반 단속 이력 데이터로, 단속 일시·장소·방법 등의 정보를 포함한다.
- 2022년 1월 1일 ~ 2023년 10월 31일, 총 794,738건의 단속 레코드 분석
- 단속 일시를 연·월·요일·시간대·계절로 파생 변수 생성
단속 방법이 한 가지가 아니라는 점이 이후 분석의 핵심 열쇠가 되며. 무인 CCTV가 자동으로 잡는 것과 사람이 나가서 적발하는 것, 시민이 직접 신고하는 것이 모두 섞여 있다.
| 단속 방법 | 건수 | 비중 | 성격 |
|---|---|---|---|
| 고정형 | 370,362 | 46.6% | 무인 CCTV, 24시간 자동 |
| 주행형 | 234,661 | 29.5% | 단속 차량 순찰 |
| 국민신문고 | 158,354 | 19.9% | 시민 신고 |
| 보행 | 27,961 | 3.5% | 단속원 도보 순찰 |
| 주민신고제 | 3,400 | 0.4% | 시민 신고 |
3. 불법주정차 단속 카메라 위치 정보
수원시 공식 홈페이지에서 수집한 고정형 CCTV의 설치 위치(GPS 좌표) 데이터이다. 448개 지점이 확인되었으며 고정형 외 단속(주행형·보행·시민신고)은 좌표가 없어, Kakao Local API로 주소를 위·경도로 변환해 지도 시각화에 활용했다.
분석 과정
시민 인식 분석: 주차가 교통 문제 1순위
수원서베이 2025년 1분기 데이터의 교통 분야 문제점 항목(q8)을 분석한 결과, 주차장 부족이 시민이 가장 시급하게 느끼는 교통 불편 요인 1위로 나타났다.
| 순위 | 항목 | 응답 | 비중 |
|---|---|---|---|
| 1 | 주차장 부족 | 480 | 23.1% |
| 2 | 도로 혼잡 | 361 | 17.3% |
| 3 | 교통안전시설 부족 | 355 | 17.1% |
| 4 | 협소한 도로 | 329 | 15.8% |
(n=2,081) 2위 도로 혼잡과 5.8%p 차이로, 교통 분야에서 주차가 단일 1순위 불만이라는 점이 뚜렷했다.

흥미로운 것은 같은 시민이 통근·통학 상황을 물었을 때는 답이 달라진다는 점이었다. 2024년 수원서베이 문15-5(통근·통학 시 가장 불편한 점)에서 주차공간 부족은 265명으로 4위에 그쳤고 1위는 도로 혼잡(722명), 2위는 대중교통 배차간격(478명)이었습니다.
이 차이는 주차가 이동 중의 문제가 아니라 목적지에 도착한 뒤의 문제임을 시사한다. 출퇴근길에서 겪는 불편이 아니라, 거주지와 상업지에 머무는 동안 발생하는 문제라는 뜻으로 이는 이후 정책 제언에서 "목적지 주변 주차 안내"에 무게를 싣는 근거가 되었다.
2023·2024년 수원서베이의 교통 인프라 항목도 분석했다. 주차시설의 인프라 구축 정도(문17)와 만족도(문18)는 7점 척도에서 평균 4.2점 안팎으로, 부정 응답이 약 29%였고 주관식 문항(2023년 문55-2, 2024년 문62-2)에서도 주차시설 부족·주차난·불법주차 단속 요구가 반복적으로 등장했다.
단속 데이터 전처리 및 EDA
단속일시 데이터를 datetime64 형식으로 변환한 후, 다음과 같은 파생 변수를 생성하여 시계열 패턴을 분석했다.
연도별 단속 추이 — 그래프를 그대로 믿으면 안 되는 이유
처음 그린 연도별 그래프는 2022년 425,002건에서 2023년 369,736건으로 13.0% 감소하는 모습이었다.
[이미지2 - 년도 별 단속 횟수]
하지만 데이터의 마지막 레코드가 2023년 10월 31일이었는데 즉, 2023년은 12개월이 아니라 10개월치였던 것이다. 두 해를 1~10월로 맞춰 다시 비교하자 결과가 뒤집혔다.
| 비교 방식 | 2022년 | 2023년 | 증감 |
|---|---|---|---|
| 원시 비교 (그래프) | 425,002 | 369,736 | −13.0% |
| 1~10월 동일 기간 | 346,151 | 369,736 | +6.8% |
단속은 줄어든 게 아니라 늘고 있었다. 관측 시퀀스의 길이가 다르다는 사실 하나로 결론의 부호가 바뀌게 된 것이다.
월별·계절별 단속 패턴
같은 함정이 월별 그래프에도 있었다. 11월과 12월만 유독 절반 수준으로 낮게 보였는데, 두 달은 2022년 한 해치만 존재했기 때문이다.
[이미지3 - 월별 단속 횟수]
관측 연수로 나눠 월평균으로 보정하자 11월(40,115건)이 오히려 연중 최다, 12월(38,736건)이 3위로 올라섰다. 그래프가 보여주던 "연말 급감"은 완전한 착시였다.
[이미지4 - 계절 별 단속 횟수]
계절별로는 여름 26.7%, 봄 26.1%, 가을 23.6%, 겨울 23.6%로 뚜렷한 계절성이 없었고 패턴을 찾지 못한 것도 결과이므로 그대로 기록했다.
요일별 단속 패턴 — 이 프로젝트에서 가장 중요한 발견
통합 그래프만 보면 평일이 주말보다 단속이 많아, "역시 평일이 문제"라고 결론 지을 수 있었다.
[이미지5 - 요일 별 단속량]
하지만 앞서 확인한 대로 단속 방법에는 성격이 전혀 다른 두 종류가 섞여 있다. 기계가 24시간 똑같이 감시하는 고정형과, 사람이 근무 시간에 나가서 하는 주행형·보행 단속이다. 이 둘을 나눠 보자 정반대의 그림이 나타났다.
| 평일 일평균 | 주말 일평균 | 차이 | |
|---|---|---|---|
| 고정형 CCTV (24시간 무인) | 51,875 | 55,494 | +7.0% |
| 주행형 + 보행 (사람 단속) | 46,732 | 14,482 | −69.0% |
감시 조건이 요일과 무관하게 일정한 고정형에서는 주말 적발이 평일보다 7% 많다. 이는 실제 위반은 주말에 더 많다는 뜻이며 사람이 수행하는 단속은 주말에 69% 줄어듬을 확인할 수 있다.
위반이 가장 많은 시간대에 단속 인력은 사실상 철수.
통합 그래프에서는 두 흐름이 서로를 상쇄해 보이지 않던 구조였으며 이 발견은 이후 정책 제언 1번의 직접적인 근거가 되었다.
시간대별 단속 패턴
고정형 기준 14시가 47,700건으로 최다였고, 오후(48.5%) > 오전(36.9%) > 야간(14.7%) 순으로 새벽 3~4시는 500건대로 사실상 공백이었다.
[이미지6 - 시간대 별 단속량]
단속 방법별 분포
[이미지7 - 단속방법 비율]
고정형이 46.6%로 가장 크지만, 시민 신고(국민신문고 + 주민신고제)가 20.3% 를 차지한다는 점이 눈에 띄며 이는 시민이 이미 상당한 감시 기능을 수행하고 있다는 뜻으로, 정책 제언 2번의 앱 구상과 연결되는 지점이다.
위치 데이터 통합 및 지도 시각화
분석의 핵심은 단속 데이터에 위치 정보를 결합하여 지역별 불법주정차 실태를 지도로 시각화하는 것이었다.
고정형 CCTV 데이터 처리:
수원시 공식 홈페이지에서 4개 구의 CCTV 설치 위치 정보를 API로 수집했다. 단속 데이터의 장소명과 CCTV 데이터의 설치 지점명이 완전히 일치하지 않는 문제가 있어, rapidfuzz 라이브러리를 활용한 퍼지 매칭(Fuzzy Matching, 유사도 임계값 80%) 으로 두 데이터를 연결했다.
고정형 외 단속 데이터 처리: 주행형·보행·시민신고 단속은 GPS 좌표 없이 주소 텍스트만 존재했다(424,376건). 따라서 Kakao Local API를 활용하여 주소를 위·경도로 변환하는 지오코딩(Geocoding) 파이프라인을 구축했고, API 호출 제한과 중단 대비를 위해 10만 건 단위 청크로 나눠 처리했다.
def get_lat_lng(addr):
headers = {"Authorization": f"KakaoAK {api_key}"}
params = {"query": addr}
url = "https://dapi.kakao.com/v2/local/search/address.json"
result = requests.get(url, headers=headers, params=params).json()
lat = result['documents'][0]['y']
lng = result['documents'][0]['x']
return lat, lng
지오코딩의 과정 또한 순탄치않았다. 전체 주소의 5.7%(12,807건) 는 좌표를 아예 얻지 못해 제거해야 했으며 더 까다로웠던 것은 좌표가 나왔는데 틀린 경우였다. 변환 결과의 위도 범위가 35.79~37.89, 경도가 126.65~129.33까지 퍼져 있었는데 수원시는 위도 37.23~37.33 안에 들어가는 도시이기 때문이다.
원인은 동명이지(同名異地) 였다. 주소에 "수원시"를 붙이지 않고 질의한 탓에, 다른 도시의 같은 이름 동으로 매칭된 것이다.
| 단속장소 | 반환 좌표 | 실제로 찍힌 곳 |
|---|---|---|
정자동 21 |
(37.368, 127.106) | 성남시 분당구 정자동 |
금곡동 241 |
(37.642, 127.215) | 남양주시 금곡동 |
고등동298부근 |
(37.433, 127.101) | 성남시 수정구 고등동 |
이렇게 시 경계를 벗어난 좌표가 1,482건(0.70%) 이었다. 지도에 찍어 보기 전까지는 드러나지 않던 오류였고, 질의에 시·구 이름을 포함하거나 결과를 경계 박스로 필터링했다면 막을 수 있었을 것이다.
퍼지 매칭도 되짚어 볼 부분이 있다. 임계값 80으로 448개 지점을 연결했지만 실제로 이름이 바뀐 건 6개 조합·736건(0.21%) 에 불과했고, 그중 절반은 오매칭이었다. 수원역푸르지오자이 북문 좌측이 북문 우측으로(518건), 성광프라자가 대성프라자로(16건) 붙었다. 짧은 한글 고유명사에서 fuzz.ratio 임계값 80은 좌/우, 성/대 같은 한 글자 차이를 구분하지 못하기 때문이다. 다행히 영향 규모는 작았지만, 임계값을 숫자 하나로 정하는 방식의 한계를 확인한 대목이었다.
위치 정보가 결합된 단속 데이터를 Folium으로 지도에 시각화하여 불법주정차 다발 지역을 직관적으로 파악했다.

공영주차장 현황과의 비교 분석
불법주정차 다발 지역과 공영주차장 위치(수원도시공사 운영 60개소, 10,049면)를 동일 지도에 중첩했다.
처음 세운 가설은 "단속이 집중되는 곳에 공영주차장이 없을 것" 이었다. 그런데 수치로 확인하자 가설이 성립하지 않았다.
| 지표 | 값 |
|---|---|
| 상관계수 (단속건수 ↔ 반경 500m 내 공영주차면) | +0.225 |
| 단속 상위 10% 지점(45곳) — 최근접 주차장 | 중위 470m |
| 단속 하위 25% 지점(112곳) — 최근접 주차장 | 중위 665m |
단속이 많은 곳일수록 공영주차장이 오히려 가깝고 많았다. 단속 카메라와 공영주차장이 둘 다 도심에 몰려 있기 때문에 생기는 교란이었던 것이다. 지도만 눈으로 보면 "겹친다"로 읽히지만, 상관을 계산하면 방향이 반대였다.
문제를 제대로 잡으려면 거리가 아니라 밀도로 봐야 했다. 단속량 대비 공급량으로 지표를 바꾸자 공백이 선명해졌다.
| 구 | 단속 | 공영주차면 | 1면당 단속 |
|---|---|---|---|
| 팔달구 | 271,320 | 2,823 | 96.1건 |
| 권선구 | 233,530 | 2,447 | 95.4건 |
| 영통구 | 187,699 | 2,489 | 75.4건 |
| 장안구 | 102,189 | 2,290 | 44.6건 |
| 시 전체 | 794,738 | 10,049 | 79.1건 |
가장 극단적인 곳은 인계동이었다.
인계동은 전체 단속의 19.6%(155,988건) 가 집중되는데, 공영주차면은 전체의 8.1%(814면) 에 불과하다. 1면당 단속 192건으로 시 전체 평균의 2.4배이다.
게다가 814면 중 678면이 시청 부설주차장으로 시민이 상시 이용할 수 있는 순수 공영(노외·주택가)은 136면뿐이다.
즉 문제는 "주차장이 없다"가 아니라 "수요 밀도에 견줘 공급이 압도적으로 모자라다" 였다. 한편 단속 지점 448곳 중 251곳(56%) 은 반경 500m 내 공영주차면이 아예 0면이었고, 이들이 전체 단속의 46% 를 차지했다.
[불법주정차 단속 지점과 공영주차장 위치 중첩 지도]
[인계동 공영주차장 현황]
어느 구가 가장 심각한가 — 집계 방법에 따라 답이 바뀐다.
마지막으로 확인한 것은, 이 분석 전체를 다시 보게 만든 사실이었다. "어느 구의 주차 문제가 가장 심각한가"라는 단순한 질문의 답이 단속 방법을 무엇으로 잡느냐에 따라 완전히 뒤집혔다.
| 기준 | 1위 → 4위 |
|---|---|
| 고정형(CCTV) | 팔달(166,315) > 권선 > 영통 > 장안 |
| 주행형(순찰) | 영통(76,476) > 권선 > 장안 > 팔달(38,693) |
| 비고정형 전체 | 권선(138,992) > 영통 > 팔달 > 장안 |
팔달구는 고정형 기준 압도적 1위인데, 주행형 기준으로는 꼴찌이었다. 카메라가 촘촘히 깔려 있으니 순찰 차량이 갈 이유가 줄어드는 것으로 추정된다.
여기서 분명해진 한계는 단속 건수는 위반의 함수가 아니라 단속 인프라의 함수라는 점으로 팔달구의 단속이 많은 것은 팔달구에 위반이 많아서이기도 하지만, 팔달구에 카메라가 많아서이기도 하다는 결론에 도달하게 된다. 단속 데이터로 "심각도"를 말하려면 이 점을 반드시 함께 밝혀야 한다.
정책 제언
데이터 분석 결과를 토대로 세 가지 정책 방향을 제언했다.
1. 데이터 기반 주차 문제 모니터링 체계 구축
단속 데이터를 주차 문제 심각도의 지표로 삼되, 원시 건수가 아니라 공급량으로 정규화한 지표를 사용할 것을 제안했다. 앞서 확인했듯 원시 건수는 단속 인프라 분포에 좌우되기 때문이다. "공영주차면 1면당 단속 건수"처럼 수요와 공급을 함께 담는 지표라야 구 간 비교가 성립한다.
가장 즉각적인 개선 여지는 주말 단속 공백이다. 무인 CCTV 기준 주말 위반이 평일보다 7% 많은데, 사람이 수행하는 단속은 주말에 69% 줄어든다. 순찰 인력을 주말로 재배치하는 것만으로도 추가 예산 없이 단속 효율을 끌어올릴 수 있다. 반대로 고정형 카메라가 이미 촘촘한 팔달구 도심에는 순찰 자원을 줄이고, 카메라가 상대적으로 적은 영통·권선의 주행형 단속에 집중하는 배분도 가능하다.
2. IoT 기반 통합 주차 애플리케이션 도입
서울시의 실시간 주차현황 안내시스템을 벤치마킹하여, 수원시형 통합 주차 앱을 개발한다.
- IoT 센서 기반 주차 가용 공간 실시간 감지
- 공영주차장·부설주차장 통합 검색 및 예약 기능
- 목적지 주변 주차 가능 공간 안내로 불법주정차 유인 원천 차단
- 주차 요금 간편 결제 및 이용 이력 관리
3. 주차 공간 확보를 위한 제도적 정책
- 역세권 복합개발 시 지하 공영주차장·복합 환승주차장 등 통합 주차대책 의무화
- 신축 건축물 부설주차장 확대 및 의무화 강화, 노후 건축물 재개발 시 주차장 확보 필수 조건 설정
- 학교·공공기관·대형마트 등 유휴 시간대 주차 공간 개방 정책 확대
- 도심 매력 거점 주변 교통 접근성 개선을 위한 인근 주차 인프라 확충
특히 인계동 사례는 부설주차장 개방의 효과를 잘 보여준다. 인계동 공영주차면 814면 중 678면이 시청 부설주차장인데, 이를 야간·주말에 개방하는 것만으로 시민이 실제 이용 가능한 주차면이 136면에서 814면으로 늘어나게 되는것이다. 앞서 확인한 주말 위반 집중 패턴과도 정확히 맞물리는 처방이다.
회고
이번 프로젝트에서 가장 도전적이었던 부분은 서로 다른 출처의 데이터를 연결하는 작업이었다. 행정동과 법정동 간의 명칭 불일치, CCTV 지점명과 단속 장소명의 불일치 등 현실 데이터에서 흔히 발생하는 노이즈를 퍼지 매칭과 API 지오코딩으로 다루는 과정이 인상적이었다.
다만 되돌아보면, 데이터가 주는 함정을 찾아내는 과정이 가장 인상깊은 지점이었다.
첫째, 그래프는 일관된 척도가 갖춰져야한다는 것이다. 연도별 단속 그래프는 13% 감소를 또렷하게 보여줬지만, 데이터가 10월에 끊긴다는 사실을 확인하고 기간을 맞추자 6.8% 증가로 뒤집혔다. 월별 그래프의 "연말 급감"도 같은 이유의 착시였다. 축과 관측 창을 의심하지 않았다면 정반대의 정책 제언을 썼을지도 모른다.
둘째, 합쳐 놓으면 사라지는 신호가 있다. 요일별 통합 그래프는 평범했지만, 자동 단속과 사람 단속을 나누자 "위반이 가장 많은 주말에 인력이 철수한다"는 구조가 드러났다. 서로 반대 방향인 두 흐름이 평균에서 상쇄되고 있었던 것이다. 무엇으로 쪼개 볼지를 정하는 것이 분석의 절반이라는 걸 배웠다.
셋째, 눈으로 본 상관은 상관이 아니다. 단속 다발 지역과 공영주차장을 지도에 겹쳐 놓고 "겹친다"고 읽었지만, 상관계수를 계산하자 부호가 반대였다. 둘 다 도심에 몰려 있다는 공통 원인 때문이었다. 가설을 지도에서 확인하고 끝냈다면 데이터가 뒷받침하지 않는 주장을 실었을 것이다.
넷째, 지표는 측정 방식을 반영한다. "어느 구가 가장 심각한가"의 답이 단속 방법에 따라 팔달구에서 영통구로, 다시 권선구로 바뀌는 것을 보고 나서야, 단속 건수가 위반의 크기가 아니라 단속 인프라의 크기를 재고 있었다는 것을 깨달았다.
본 프로젝트는 데이터 EDA로 실제 정책 제언으로 이어지는 흐름을 경험할 수 있었고, 동시에 데이터가 말하지 않는 것까지 세심하게 확인해야 탄탄한 근거가 된다는 점을 배운 경험이었다.
남은 한계
- 공영주차장 데이터는 수원도시공사 운영 60개소만 포함한다. 구/민간 운영 주차장과 건물 부설주차장이 빠져 있어, 실제 주차 공급은 분석보다 클 것이다. 어쩌면 "공백"의 크기는 과대평가되었을 수 있다.
- 주차장확보율 지표는 2017년과 2018년 사이에 100.3%에서 61.8%로 급락한다. 한 해 만에 38.5%p가 떨어지는 것은 물리적으로 불가능하므로 통계 산출 기준 변경이 의심되지만 이 구간을 가로지르는 추세 해석은 하지 않았다.
- 지오코딩에 실패한 5.7%를 단순 제거했다. 주소 표기가 불완전한 레코드를 결측치로 여기고 제거하는 선택을 했으나 만일 특정 지역에 몰려 있다면 객관적인 자료 분석이 되지 않았을 수도 있다.
사용 기술: Python · Pandas · NumPy · Seaborn · Matplotlib · Folium · GeoPandas · Shapely · rapidfuzz · Kakao Local API
데이터 출처: 경기도 수원시 주정차위반단속위치현황(data.go.kr) · 수원서베이 및 SRI 시민패널조사 · 수원시 도시정책지표 · 수원도시공사 공영주차장 현황 · 수원시 불법주정차 단속 CCTV 위치 API
분석 범위: 2022년 1월 1일 ~ 2023년 10월 31일, 단속 794,738건