상세 컨텐츠

본문 제목

소상공인시장진흥공단_상가정보 데이터셋

인공지능/데이터분석

by Ryuzy 2024. 12. 18. 15:37

본문

728x90
반응형

1. 공공데이터

공공데이터(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('서울')]

 

 

2. Seaborn

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='상권업종소분류명')

 

 

3. Folium

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
728x90
반응형

'인공지능 > 데이터분석' 카테고리의 다른 글

커피 프랜차이즈의 입점전략  (4) 2024.12.20
서울시 공공자전거 실시간 대여정보  (2) 2024.12.19
Online Retail 데이터셋 살펴보기  (1) 2024.12.15
matplotlib  (2) 2024.12.14
판다스  (1) 2023.12.08

관련글 더보기