📌 [부동산 분석 2편] folium, geopandas로 지도 위에 인프라 시각화하기
2025. 6. 18. 16:03ㆍPython
지난 시간에는
부동산 실거래가 분석을 통해
'거래 금액이 안정적인 지역'을 찾는 방법을 정리했습니다.
이번 포스팅에서는 **공공 인프라 데이터(학교, 병원, 지하철)**를
지도 위에 시각화해서 겹치는 지역을 한눈에 파악하는 방법을 알려드릴게요.
✅ 목차 안내
단계 내용
| 1️⃣ | 사용한 라이브러리 소개 및 설치 방법 |
| 2️⃣ | 공공 위치 데이터를 불러오고 전처리하기 |
| 3️⃣ | folium을 활용한 지도 위 시각화 |
| 4️⃣ | geopandas와 함께 행정구역 경계 겹쳐보기 |
| 5️⃣ | 실전 예시 – 학군+지하철+병원 겹치는 지역 도출 |
🚀 1️⃣ 사용 라이브러리 설치하기
!pip install folium geopandas shapely
라이브러리 역할
| folium | Leaflet 기반 지도 시각화 |
| geopandas | 행정구역 등 공간데이터 처리 |
| shapely | 좌표 기반 거리 계산 등 지원 |
📂 2️⃣ 위치 데이터 불러오기 & 정제
예시로 사용할 데이터는 아래와 같습니다.
파일명 설명
| 전국초중등학교위치표준데이터.csv | 학교 위도/경도 |
| 의료기관(구별).csv | 소아과 위치 |
| 지하철역 좌표 데이터 | 구글 맵 API 또는 공개 데이터 활용 |
import pandas as pd
school = pd.read_csv("전국초중등학교위치표준데이터.csv")
hospital = pd.read_csv("의료기관(구별).csv")
school = school.dropna(subset=["위도", "경도"])
hospital = hospital.dropna(subset=["위도", "경도"])
🗺️ 3️⃣ folium으로 지도 시각화하기
import folium
# 서울 중심 좌표
m = folium.Map(location=[37.55, 126.98], zoom_start=11)
# ✅ 학교 표시
for i, row in school.iterrows():
folium.CircleMarker(
location=[row["위도"], row["경도"]],
radius=3,
color="blue",
fill=True,
popup=row["학교명"]
).add_to(m)
# ✅ 병원 표시
for i, row in hospital.iterrows():
folium.CircleMarker(
location=[row["위도"], row["경도"]],
radius=3,
color="red",
fill=True,
popup=row["의료기관명"]
).add_to(m)
m
결과: 파란 점(학교) + 빨간 점(병원)이 동시에 표시된 인터랙티브 지도
🗺️ 4️⃣ geopandas로 행정구역 경계 표시
행정구역 정보 (예: 서울시 구 경계)는 공간정보포털에서 shp파일(.shp, .shx 등)을 받아올 수 있습니다.
import geopandas as gpd
# 서울시 행정구역 경계 불러오기
gdf = gpd.read_file('TL_SCCO_SIG.shp', encoding='cp949')
# folium 위에 GeoJson으로 덧씌우기
folium.GeoJson(gdf).add_to(m)
m
→ 지도 위에 구별 경계선 표시까지 완성!
🔎 5️⃣ 실전 예시: 겹치는 지역 분석하기
목표:
학교, 병원, 지하철이 모두 1km 내에 위치한 구역 찾기
📌 거리 계산 로직 예시 (geopy 사용)
from geopy.distance import geodesic
def is_within_radius(center, point, radius_km):
return geodesic(center, point).km <= radius_km
→ 특정 아파트 좌표 기준으로, 반경 1km 내 시설 유무 체크 가능!
📌 각 요소가 겹치는 지역을 score로 환산
df['score'] = (
df['school_within_1km'].astype(int) +
df['hospital_within_1km'].astype(int) +
df['subway_within_1km'].astype(int)
)
top_recommend = df.sort_values(by='score', ascending=False).head(10)
결과: 실제 추천 지역 Top 10 산출!
✅ 최종 요약
항목 내용
| 목표 | 공공 인프라가 겹치는 지역 탐색 |
| 도구 | folium, geopandas, geopy |
| 지도 기능 | 지도 생성, 점 찍기, 경계 덧씌우기 |
| 활용 | 학교+병원+지하철 위치 기반 거주지 추천 가능 |
📎 다음 편 예고
👉 다음 포스팅에서는
거래금액의 표준편차를 이용한 ‘가격 안정성 점수화’,
지역별 집계 & 순위 시각화를 다룰 예정입니다.
'Python' 카테고리의 다른 글
| 변수란? 이름 짓는 규칙부터 오류 예시까지! (0) | 2025.06.23 |
|---|---|
| print() vs input() 차이 (2) | 2025.06.23 |
| 파이썬 주민등록번호로 성별 판단하는 코드 분석 (0) | 2025.05.28 |
| 파이썬 for (0) | 2025.05.28 |
| Python 조건문과 들여쓰기의 중요성 (0) | 2025.05.28 |