📌
# 경기도의 인구 데이터와 위치 정보를 이용하여 인구를 지도에 표시하기
import pandas as pd
import folium
import json # json형태의 파일을 처리하기 위한 모듈
#1 경기도 인구 데이터를 읽어 df 변수에 저장하기. 구분컬럼을 인덱스로 지정
df = pd.read_excel("data/경기도인구데이터.xlsx",index_col='구분')
df.info()
df.columns # 컬럼명의 자료형이 정수형
# 컬럼의 자료형을 문자열형으로 변경하기
df.columns = df.columns.map(str)
df.columns # 컬럼명의 자료형이 문자열형
#2 위치정보를 가지고 잇는 경기도행정구역경계.json 파일 읽기
# 경기도행정구역경계.json 파일의 내용을 읽어서 json형식의 객체(dict 객체)로 load
# json 형식 : {"키":"값","키2":"값2",...}
geo_data = json.load(open("data/경기도행정구역경계.json",encoding="utf-8"))
type(geo_data) # 딕셔너리 객체
#3 지도표시하기
g_map = folium.Map(location=[37.5502,126.982],zoom_start=9)
year = '2017'
# 데이터와 위치값 매칭
'''
지도에 데이터의 크기만큼 색상으로 표시
# geo_data : 위치정보를 저장하는 딕셔너리 객체 설정.
경계를 표시해주는 데이터. 위도,경도 정보
# data : 표시하고자 하는 데이터
# fill_color : 색상표. 데이터에 맞는 색상값을 가져오기 위한 색상표
# fill_opacity : 내부 색상 투명도
# line_opacity : 경계선 투명도
# threshold_scale : 데이터와 색상 표시할 때 사용되는 범위 지정
# key_on='feature.properties.name' : 데이터와 지역경계부분 연결 설정
'''
folium.Choropleth(geo_data = geo_data, # 위치정보를 가진 딕셔너리 데이터
data = df[year], # 표시하고자 하는 데이터값
columns = [df.index, df[year]], # 지역명, 데이터
fill_color = 'YlOrRd', # 채워질 색상 맵. 데이터에 따라 다른 색상 설정
fill_opacity=0.7, line_opacity=0.3, # 내부 투명도, 경계선 투명도
# 데이터와 색상 표시시 사용되는 범위 지정
threshold_scale=[1000,100000,200000,300000,400000,500000,
600000,700000],
key_on='feature.properties.name', # 데이터와 지역구분을 연결을 시켜주는 값
).add_to(g_map)
g_map.save('gyonggi1_' + year + '.html')
df.index
df[year]
df.loc["남양주시"]
df.loc["화성시"]
df.loc["과천시"]
📌
###################
# us-states.json, US_Unemployment_Oct2012.csv 사용하여 지도로 표시하기
import folium
import pandas as pd
state_geo = "data/us-states.json"
state_unemployment = "data/US_Unemployment_Oct2012.csv"
state_data = pd.read_csv(state_unemployment)
m = folium.Map(location=[48,-102], zoom_start=3)
folium.Choropleth(
state_geo, # 문자열. 파일의 위치 인식.
data = state_data, # 표시할 데이터
columns=["State","Unemployment"], # 컬럼명 설정(지역명,데이터 컬럼)
# state_geo 데이터의 id값
key_on = "feature.id", # 데이터값과 지도의 위치 연결컬럼.
fill_color="YlGn", # 컬러맵 지정
fill_opacity=0.7,
line_opacity=0.2,
legend_name="Unemployment Rate (%)", # 범례명
).add_to(m)
m.save('usa1.html')
'수업(국비지원) > Python' 카테고리의 다른 글
[Python] numpy 연산 (0) | 2023.04.25 |
---|---|
[Python] numpy 행렬 (0) | 2023.04.25 |
[Python] 지도를 이용한 시각화1 (0) | 2023.04.25 |
[Python] 시각화 - seaborn 모듈을 이용한 그래프(distplot,kdeplot,histplot 등) (0) | 2023.04.25 |
[Python] seaborn 모듈 - 시각화 모듈 선형회귀 그래프 (0) | 2023.04.25 |