제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.12]

[강의 요약]

[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일반 강의 자료 일부를 발췌하여 작성되었습니다.”