반응형
파이썬 folium 라이브러리 사용하기(지속 수정중)
1) 모듈 설치하기
> pip install folium 명령어 입력하여 설치하기
2) import 하기
> import pandas as pd
> import folium
3) 지도 출력하기
> 아래의 코드에서 parking_lot_lat.loc[i]는 위도, parking_lot_lon.loc[i]는 경도를 넣으면 됩니다.
> tiles는 기본적으로 지도의 디자인을 선택합니다.
*tiles의 매개변수
#OpenStreetMap
#Mapbox Bright
#Mapbox Control Room
#Stamen
#Cloudmade <- API 키 필요
#Mapbox <- API 키 필요
#CartoDB
> zoom_start는 배율을 말함
m = folium.Map([parking_lot_lat.loc[i], parking_lot_lon.loc[i]],
tiles = "OpenStreetMap",
zoom_start = 10)
4) 지도 위에 써클 출력하기
> parking_lot_lat.loc[i]는 위도, parking_lot_loc[i]는 경도
> radius는 원의 크기
folium.CircleMarker(location=[parking_lot_lat.loc[i], parking_lot_lon.loc[i]],
radius = 5,
color = "#FF0000",
fil_color = "#ffffff",
popup = print(parking_lot.no[i])).add_to(m)
import folium
#35.8242238, 127.1479532 전주시 위도, 경도
#folium.Map(location = [위도, 경도], tiles = 지도의 디자인, zoom_start(배율지정)=15)
# tiles의 매개변수는 아래와 같다.
#OpenStreetMap
#Mapbox Bright (Limited levels of zoom for free tiles)
#Mapbox Control Room (Limited levels of zoom for free tiles)
#Stamen (Terrain, Toner, and Watercolor)
#Cloudmade (Must pass API key)
#Mapbox (Must pass API key)
#CartoDB (positron and dark_matter)
m = folium.Map([35.8467324,127.1271785],
tiles = "OpenStreetMap",
zoom_start = 15)
#abc.html로 맵 저장
m.save('abc.html')
#맵을 return
#m.get_root().render()
#folium.Marker(location=[37.564214, 127.001699],
# icon=folium.Icon(color='red', icon='star', popup="Center of seoul").add_to(m))
#지도에 원 표시
#radius 원의 크기
#color 테두리색
#fill_color 채우기색
folium.CircleMarker(location=[35.8467324,127.1271785],
radius=100, # 원의 크기
color="#ffffff", # 테두리색
fill_color="#000", # 채우기색
popup="JBNU").add_to(m)
m
folium 필사
import pandas as pd
import numpy as np
import folium
import folium.plugins as plugins
df=pd.read_csv('abc.csv',encoding = 'CP949')
df.head()
df.sort_values(by='기준날짜',inplace=True)
df = df.reset_index(drop=True)
new = df[['기준날짜','카메라명칭']].copy()
new['계수 평균'] = (df['진입계수'] + df['진출계수'])/2
new.head()
location = pd.DataFrame(new['카메라명칭'].unique(), columns=['카메라명칭'])
location['위도'] = pd.Series([37.57777, 37.581425, 37.581286, 37.580543])
location['경도'] = pd.Series([126.982634, 126.984794, 126.981567, 126.986594])
location
new = pd.merge(new, location, on='카메라명칭')
new = new.sort_values(by='기준날짜')
new.head()
new = new.set_index('기준날짜')
new.to_csv('북촌 유동인구.csv', encoding='EUC-KR')
value = new['계수 평균'].values
minimum = min(value)
maximum = max(value)
new['계수 평균'] = new['계수 평균'].transform(func = lambda x : 300*(x - minimum)/(maximum-minimum))
new['계수 평균'] = np.ceil(new['계수 평균']).astype(int)
new.head()
date = list(new.index.unique())
matrix = []
for j in date:
a = []
temp = new[new.index==j]
for lat, lon, value in zip(temp['위도'], temp['경도'], temp['계수 평균']):
[a.append([lat+np.random.normal(0,0.0003), lon+np.random.normal(0,0.0003)]) for i in range(value)]
matrix.append(a)
def change_date(x):
x = str(x)
return x[:4] + '-' + x[4:6] + '-' + x[6:]
time_ind = list(map(lambda i: change_date(i), date))
print(time_ind)
m = folium.Map([37.579362, 126.984746], zoom_start=16)
plugins.HeatMapWithTime(matrix, index=time_ind).add_to(m)
m
반응형
'Language > Python' 카테고리의 다른 글
파이썬 XGBoost 시각화(XGBoost Visualization) (0) | 2020.09.24 |
---|---|
파이썬 다중 선형 회귀 분석 시각화(Multiple Regression Analysis) (10) | 2020.09.24 |
'cp949' codec can't decode byte 0xee in position 15: illegal multibyte sequence (0) | 2020.09.13 |
파이썬 데이터프레임 결합하기(concat) (0) | 2020.09.10 |
파이썬 셀레늄(Selenium)을 이용한 크롤링하기 (0) | 2020.09.02 |
파이썬 다음 뉴스 웹 크롤링하기 (0) | 2020.09.02 |
파이썬 퍼머 링크 목록 추출하기 (2) | 2020.09.02 |
파이썬 SQLite3 DBMS로 저장하기 (0) | 2020.09.01 |
최근댓글