공공데이터(data.go.kr)는 대한민국 정부에서 운영하는 공공데이터 포털로, 공공기관이 보유한 다양한 데이터를 국민과 기업, 개발자 등에게 개방하여 활용할 수 있도록 제공하는 플랫폼입니다. 데이터를 파일 형식(Excel, CSV 등)으로 다운로드하거나, API 형태로 실시간 연동하여 사용할 수 있습니다.
1. "소상공인시장진흥공단_상가(상권)정보"을 검색 후 압축파일을 다운로드합니다.
2. 압축을 해제하고 "서울" csv 데이터를 구글드라이브에 업로드합니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
shop = pd.read_csv('/본인의 구글드라이브 경로/소상공인시장진흥공단_상가(상권)정보_서울_202409.csv', low_memory=False)
shop
pd.set_option('display.max_columns', 40)
shop
shop.info()
shop.columns
view_columns = ['상호명', '지점명', '상권업종대분류명', '상권업종중분류명',
'상권업종소분류명', '시도명', '시군구명', '도로명', '도로명주소',
'경도', '위도']
shop = shop[view_columns]
shop.head()
shop.isnull().sum()
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
plt.rc('font', family='NanumBarunGothic')
# 산점도 그리기
plt.figure(figsize=(6, 8)) # 그래프 크기 설정
plt.scatter(shop['경도'], shop['위도']) # 산점도 그리기
plt.xlabel('경도') # x축 레이블
plt.ylabel('위도') # y축 레이블
plt.grid(True) # 그리드 추가
plt.show() # 그래프 출력
len(shop)
shop.loc[shop['도로명주소'].str.startswith('서울')]
shop.loc[~shop['도로명주소'].str.startswith('서울')]
Seaborn은 Python의 데이터 시각화 라이브러리로, Matplotlib 위에 구축되어 데이터를 더 간단하고 쉽게 시각화할 수 있도록 설계되었습니다. 주로 통계적 데이터 시각화에 초점이 맞춰져 있으며, 다양한 차트와 스타일 옵션을 제공합니다.
pip install seaborn
import seaborn as sns
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop, x='경도', y='위도', hue='시군구명')
shop.head()
shop['상권업종대분류명'].value_counts()
shop_edu = shop[shop['상권업종대분류명'] == '교육']
shop_edu
shop_edu.shape
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_edu, x='경도', y='위도', hue='상권업종중분류명')
shop_edu_etc = shop_edu[shop_edu['상권업종중분류명'] == '기타 교육']
shop_edu_etc
shop_edu_etc.shape
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_edu_etc, x='경도', y='위도', hue='상권업종소분류명')
shop_edu_etc_computer = shop_edu_etc[shop_edu_etc['상권업종소분류명'] == '컴퓨터 학원']
shop_edu_etc_computer
shop_edu_etc_computer.shape
plt.figure(figsize=(14, 10))
sns.scatterplot(data=shop_edu_etc_computer, x='경도', y='위도', hue='상권업종소분류명')
Folium은 파이썬에서 대화형 지도(interactive map)를 생성할 수 있는 라이브러리입니다. 특히, 지리 데이터(Geospatial Data) 시각화에 최적화되어 있으며, 간단한 코드로 복잡한 지도 기능을 구현할 수 있도록 도와줍니다.
pip install folium
import folium
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262], zoom_start=15)
popup = folium.Popup('서울특별시청', max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262], popup=popup).add_to(map_folium)
popup = folium.Popup('덕수궁', max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248], popup=popup).add_to(map_folium)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup).add_to(map_folium)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup).add_to(map_folium)
popup = folium.Popup('영풍문고-종로본점', max_width=200)
folium.Marker(location=[37.56999947440024, 126.98228391170936], popup=popup).add_to(map_folium)
map_folium
from folium.features import CustomIcon
icon = CustomIcon('icon.png', icon_size=(45, 45))
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262], zoom_start=15)
popup = folium.Popup('서울특별시청', max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262], popup=popup,
icon=folium.Icon(icon='star', color='red')).add_to(map_folium)
popup = folium.Popup('덕수궁', max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248], popup=popup,
icon=folium.Icon(icon='ok', color='pink')).add_to(map_folium)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup,
icon=icon).add_to(map_folium)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup).add_to(map_folium)
# CircleMarker(): 원의 범위를 마커로 설정
popup = folium.Popup('내땅', max_width=200)
folium.CircleMarker(location=[37.56999947440024, 126.98228391170936], popup=popup,
radius=30, color='red', fill_color='#ec4074').add_to(map_folium)
map_folium
data = shop_edu_etc_computer
edu_map = folium.Map(location=[data['위도'].mean(), data['경도'].mean()], zoom_start=12)
for i in data.index:
edu_name = data.loc[i, '상호명'] + ' - ' + data.loc[i, '도로명주소']
# print(edu_name)
popup = folium.Popup(edu_name, max_width=500)
folium.Marker(location=[data.loc[i, '위도'], data.loc[i, '경도']],
popup=popup).add_to(edu_map)
edu_map
커피 프랜차이즈의 입점전략 (4) | 2024.12.20 |
---|---|
서울시 공공자전거 실시간 대여정보 (2) | 2024.12.19 |
Online Retail 데이터셋 살펴보기 (1) | 2024.12.15 |
matplotlib (2) | 2024.12.14 |
판다스 (1) | 2023.12.08 |