import pandas as pd
import folium
# 기본 encoding은 utf-8, 에러 발생시 : euc-kr로 설정
market = pd.read_csv('./data/전국전통시장표준데이터.csv', encoding='utf-8') # encoding='euc-kr'
market.head()
시장명 | 시장유형 | 소재지도로명주소 | 소재지지번주소 | 시장개설주기 | 위도 | 경도 | 점포수 | 취급품목 | 사용가능상품권 | 홈페이지주소 | 공중화장실보유여부 | 주차장보유여부 | 개설연도 | 전화번호 | 데이터기준일자 | 제공기관코드 | 제공기관명 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 도구시장 | 5일장 | NaN | 경상북도 포항시 남구 동해면 도구리 668-1 | 2일,7일 | 35.987981 | 129.439925 | 10.0 | 농산물 생필품, 수산물, 잡화 등 | 포항사랑상품권, 온누리상품권 | NaN | Y | Y | 1915 | NaN | 2020-02-25 | 6470000 | 경상북도 |
1 | 장기시장 | 5일장 | NaN | 경상북도 포항시 남구 장기면 임중리 333-2 | 4일,9일 | 35.891559 | 129.491439 | 13.0 | 농산물 생필품, 수산물, 잡화 등 | 포항사랑상품권, 온누리상품권 | NaN | Y | N | 1914 | NaN | 2020-02-25 | 6470000 | 경상북도 |
2 | 신광시장 | 5일장 | NaN | 경상북도 포항시 북구 신광면 토성리 486-5 | 5일,10일 | 36.128680 | 129.261912 | 22.0 | 농산물 생필품, 수산물, 잡화 등 | 포항사랑상품권, 온누리상품권 | NaN | Y | N | 1965 | NaN | 2020-02-25 | 6470000 | 경상북도 |
3 | 기계시장 | 5일장 | NaN | 경상북도 포항시 북구 기계면 현내리 403 | 1일,6일 | 36.069939 | 129.208468 | 18.0 | 농산물 생필품, 수산물, 잡화 등 | 포항사랑상품권, 온누리상품권 | NaN | Y | N | 1923 | NaN | 2020-02-25 | 6470000 | 경상북도 |
4 | 죽장시장 | 5일장 | NaN | 경상북도 포항시 북구 죽장면 입암리 858-34 | 3일,8일 | 36.161583 | 129.095434 | 18.0 | 농산물 생필품, 수산물, 잡화 등 | 포항사랑상품권, 온누리상품권 | NaN | Y | N | 1919 | NaN | 2020-02-25 | 6470000 | 경상북도 |
### 데이터 살펴보기
print(market.columns)
print(market.shape)
print(market.info() )
Index(['시장명', '시장유형', '소재지도로명주소', '소재지지번주소', '시장개설주기', '위도', '경도', '점포수', '취급품목', '사용가능상품권', '홈페이지주소', '공중화장실보유여부', '주차장보유여부', '개설연도', '전화번호', '데이터기준일자', '제공기관코드', '제공기관명'], dtype='object') (2882, 18) <class 'pandas.core.frame.DataFrame'> RangeIndex: 2882 entries, 0 to 2881 Data columns (total 18 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 시장명 2882 non-null object 1 시장유형 2882 non-null object 2 소재지도로명주소 2767 non-null object 3 소재지지번주소 2692 non-null object 4 시장개설주기 2882 non-null object 5 위도 2775 non-null float64 6 경도 2775 non-null float64 7 점포수 2791 non-null float64 8 취급품목 2641 non-null object 9 사용가능상품권 2512 non-null object 10 홈페이지주소 587 non-null object 11 공중화장실보유여부 2882 non-null object 12 주차장보유여부 2882 non-null object 13 개설연도 2607 non-null object 14 전화번호 1809 non-null object 15 데이터기준일자 2882 non-null object 16 제공기관코드 2882 non-null object 17 제공기관명 2882 non-null object dtypes: float64(3), object(15) memory usage: 405.4+ KB None
market.isnull().sum()
시장명 0 시장유형 0 소재지도로명주소 115 소재지지번주소 190 시장개설주기 0 위도 107 경도 107 점포수 91 취급품목 241 사용가능상품권 370 홈페이지주소 2295 공중화장실보유여부 0 주차장보유여부 0 개설연도 275 전화번호 1073 데이터기준일자 0 제공기관코드 0 제공기관명 0 dtype: int64
market_name = market['시장명']
market_lati = market['위도']
market_long = market['경도']
market.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 2882 entries, 0 to 2881 Data columns (total 18 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 시장명 2882 non-null object 1 시장유형 2882 non-null object 2 소재지도로명주소 2767 non-null object 3 소재지지번주소 2692 non-null object 4 시장개설주기 2882 non-null object 5 위도 2775 non-null float64 6 경도 2775 non-null float64 7 점포수 2791 non-null float64 8 취급품목 2641 non-null object 9 사용가능상품권 2512 non-null object 10 홈페이지주소 587 non-null object 11 공중화장실보유여부 2882 non-null object 12 주차장보유여부 2882 non-null object 13 개설연도 2607 non-null object 14 전화번호 1809 non-null object 15 데이터기준일자 2882 non-null object 16 제공기관코드 2882 non-null object 17 제공기관명 2882 non-null object dtypes: float64(3), object(15) memory usage: 405.4+ KB
market['위도'].notnull()
0 True 1 True 2 True 3 True 4 True ... 2877 True 2878 True 2879 True 2880 True 2881 True Name: 위도, Length: 2882, dtype: bool
market_1 = market.loc[ market['위도'].notnull() , :]
market_1.shape
(2775, 18)
market_1.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 2775 entries, 0 to 2881 Data columns (total 18 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 시장명 2775 non-null object 1 시장유형 2775 non-null object 2 소재지도로명주소 2668 non-null object 3 소재지지번주소 2605 non-null object 4 시장개설주기 2775 non-null object 5 위도 2775 non-null float64 6 경도 2775 non-null float64 7 점포수 2684 non-null float64 8 취급품목 2534 non-null object 9 사용가능상품권 2408 non-null object 10 홈페이지주소 561 non-null object 11 공중화장실보유여부 2775 non-null object 12 주차장보유여부 2775 non-null object 13 개설연도 2516 non-null object 14 전화번호 1752 non-null object 15 데이터기준일자 2775 non-null object 16 제공기관코드 2775 non-null object 17 제공기관명 2775 non-null object dtypes: float64(3), object(15) memory usage: 411.9+ KB
market_1.columns
Index(['시장명', '시장유형', '소재지도로명주소', '소재지지번주소', '시장개설주기', '위도', '경도', '점포수', '취급품목', '사용가능상품권', '홈페이지주소', '공중화장실보유여부', '주차장보유여부', '개설연도', '전화번호', '데이터기준일자', '제공기관코드', '제공기관명'], dtype='object')
### 필요한 정보(특징)만 가져오기
sel = ['시장명', '시장유형', '시장개설주기', '위도', '경도',
'사용가능상품권', '공중화장실보유여부', '주차장보유여부', '개설연도',
'데이터기준일자', '제공기관명']
market_2 = market_1[sel]
market_2
시장명 | 시장유형 | 시장개설주기 | 위도 | 경도 | 사용가능상품권 | 공중화장실보유여부 | 주차장보유여부 | 개설연도 | 데이터기준일자 | 제공기관명 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 도구시장 | 5일장 | 2일,7일 | 35.987981 | 129.439925 | 포항사랑상품권, 온누리상품권 | Y | Y | 1915 | 2020-02-25 | 경상북도 |
1 | 장기시장 | 5일장 | 4일,9일 | 35.891559 | 129.491439 | 포항사랑상품권, 온누리상품권 | Y | N | 1914 | 2020-02-25 | 경상북도 |
2 | 신광시장 | 5일장 | 5일,10일 | 36.128680 | 129.261912 | 포항사랑상품권, 온누리상품권 | Y | N | 1965 | 2020-02-25 | 경상북도 |
3 | 기계시장 | 5일장 | 1일,6일 | 36.069939 | 129.208468 | 포항사랑상품권, 온누리상품권 | Y | N | 1923 | 2020-02-25 | 경상북도 |
4 | 죽장시장 | 5일장 | 3일,8일 | 36.161583 | 129.095434 | 포항사랑상품권, 온누리상품권 | Y | N | 1919 | 2020-02-25 | 경상북도 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2877 | 연지상점가 | 상설장 | 상점가 | 35.575348 | 126.844651 | NaN | Y | Y | 2000 | 2019-06-28 | 전라북도 |
2878 | 새암길상점가 | 상설장 | 상점가 | 35.567002 | 126.853082 | NaN | Y | Y | 2005 | 2019-06-28 | 전라북도 |
2879 | 중앙로상점가 | 상설장 | 상점가 | 35.566605 | 126.853091 | NaN | Y | Y | 2010 | 2019-06-28 | 전라북도 |
2880 | 서부시장상점가 | 상설장 | 상점가 | 35.804433 | 127.126777 | NaN | Y | Y | 2008 | 2019-06-28 | 전라북도 |
2881 | 동문상점가 | 상설장 | 상점가 | 35.819008 | 127.151082 | 온누리상품권, 전자상품권 | Y | Y | 2007 | 2019-06-28 | 전라북도 |
2775 rows × 11 columns
market_name = market_2['시장명']
market_lati = market_2['위도']
market_long = market_2['경도']
import numpy as np
market_lati = list(market_lati)
market_long = list(market_long)
market_loc = np.array([market_lati, market_long]).T
print( market_loc.shape )
print( np.mean( market_lati) , np.mean(market_long) )
market_loc
(2775, 2) 36.20336486381247 127.88862370937265
array([[ 35.98798126, 129.4399253 ], [ 35.891559 , 129.491439 ], [ 36.12868046, 129.2619125 ], ..., [ 35.5666046 , 126.85309052], [ 35.804433 , 127.12677653], [ 35.81900809, 127.151082 ]])
from folium import plugins
import os
market_map = folium.Map(location=[ np.mean( market_lati), np.mean(market_long) ],
zoom_start=8)
market_name = list(market_name)
plugins.MarkerCluster(market_loc, popups=market_name).add_to(market_map)
market_map.save(os.path.join('.', 'Market_location.html'))
market_map