[강의 요약]
[Part 04. EDA/웹 크롤링/파이썬 프로그래밍_ Ch 03. 서울시 범죄 현황 데이터 분석] 강의 수강
클립 24~32까지 강의 수강하였음
32_실습 - 서울시범죄현황 장소별 분석. 까지
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰░ ] 57/100일 (57%)
[클립 24~32까지 정리]
▶ 1. Folium으로 지도 시각화 시작하기
Folium이란?
파이썬에서 지도 기반 시각화를 쉽게 만들어주는 도구
결과는 .html 형식으로 저장되며, 웹 브라우저에서 볼 수 있어 직관적이다.
# 설치 방법
conda install -c conda-forge folium
import folium
map = folium.Map(location=[37.55, 126.98], zoom_start=11)
map.save('map.html')
- location=[위도, 경도] : 지도의 시작 위치 설정
- zoom_start=11 : 지도 확대 수준
- save('파일명.html') : 지도를 파일로 저장
▶ 2. 마커 추가 및 스타일 지정 (CircleMarker 등)
folium.Marker(location=[lat, lng], popup='강남경찰서').add_to(map)
folium.CircleMarker(
location=[lat, lng],
radius=crime_count * 0.1,
color='red',
fill=True,
fill_opacity=0.6
).add_to(map)
- Marker : 단순 마커 아이콘 표시
- CircleMarker : 원형 마커로 수치의 크기를 표현 가능
- radius : 원의 크기 조절 (예: 범죄 발생 수치 비례)
- fill_opacity : 투명도 설정
▶ 3. json 파일로 지역 경계 시각화
우리가 사용한 json 파일은?
- 각 구의 경계선 좌표와 ID가 저장된 파일.
- folium의 Choropleth를 사용하면 구 단위 색상 표현이 가능
예시는 다음과 같다.
import json
with open('skorea_municipalities_geo_simple.json', encoding='utf-8') as f:
seoul_geo = json.load(f)
▶ 4. 범죄율을 컬러로 표현하기 (Choropleth)
folium.Choropleth(
geo_data=seoul_geo,
data=crime_data,
columns=['구별', '범죄'],
key_on='feature.id',
fill_color='PuRd',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='범죄 발생 건수'
).add_to(map)
- geo_data : json 형태의 구 경계 정보
- data : pandas DataFrame으로, 각 구별 값 포함
- columns : [구이름, 값] 형태로 연결
- key_on : json 파일에서 구별 키 (보통 'feature.id')
- fill_color : 색상맵 이름 (예: YlGnBu, PuRd, Blues 등)
▶ 5. 경찰서 위치와 범죄 수치를 함께 시각화
for name in crime_data.index:
folium.CircleMarker(
[crime_data.loc[name, 'lat'], crime_data.loc[name, 'lng']],
radius=crime_data.loc[name, '검거'] * 0.05,
popup=name,
color='blue',
fill=True,
fill_opacity=0.7
).add_to(map)
- 검거 수치를 반영해 원의 크기 조절
- popup=name : 마우스를 올렸을 때 경찰서명 출력
▶ 6. 인사이트 도출 및 결론
- 강남 3구는 범죄 발생 건수가 결코 낮지 않으며, 검거율 또한 평균보다 높다고 보기 어렵다.
- 다만 인구 대비 수치나 유흥시설 밀집도 같은 요소도 함께 고려해야 공정한 평가가 가능하다.
[추가 확인 사항]
- 유흥업소와 범죄 발생의 관계성 검토를 위해 발생 장소 기반 데이터 분석도 진행함
- 상권 밀집도와의 관계 분석은 도시공간 데이터 시각화 영역으로 확장 가능
[추가 정리]
▶ json 파일이 대체 뭘까?
JSON은 데이터를 사람도 읽고, 컴퓨터도 이해할 수 있게 정리한 파일이다.
- JSON = JavaScript Object Notation의 줄임말이다.
- 자바스크립트에서 만들었지만 지금은 파이썬, 자바, C++, 거의 모든 언어에서 쓴다.
- .json 확장자를 가진 텍스트 파일이다.
예시를 통해 이해해 보자
students.json 파일이다.
{
"students": [
{"name": "철수", "age": 13},
{"name": "영희", "age": 14}
]
}
- "students"라는 큰 그룹 안에
- "name"과 "age"라는 항목이 각각 들어 있다.
이런 구조는 마치 파이썬의 딕셔너리와 리스트를 섞은 것처럼 생겼다.
그러면 파이썬에서 json을 어떻게 사용할까?
먼저 json 파일을 읽어야 한다.
import json
with open('students.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data['students'][0]['name']) # '철수'
- json.load(f) : 파일 안의 내용을 파이썬 딕셔너리로 바꿔준다.
그럼 위에서처럼 데이터 분석할 때는 어떻게 쓸까?
서울 구별 지도 json 예시를 보자.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "강남구",
"properties": {"name": "강남구"},
"geometry": {
"type": "Polygon",
"coordinates": [[[126.9, 37.5], [126.91, 37.6], ...]]
}
}
]
}
- "id": "강남구": 이 부분이 folium에서 구 이름을 연결하는 데 쓰인다.
- "coordinates"는 지도에서 경계선을 그리는 좌표들이다.
[나의 생각 정리]
이때까지 배운 내용을 바탕으로 시험 친다면 몇 점이 나올지 궁금하다.
복습 안 하니까 휘발성이 강한 듯
[적용점]
데이터 분석(EDA)에서 사용
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.14] (0) | 2025.05.14 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.13] (0) | 2025.05.13 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.11] (1) | 2025.05.11 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.10] (0) | 2025.05.10 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.09] (0) | 2025.05.09 |