inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

공공데이터로 파이썬 데이터 분석 시작하기

[7/9] Geo JSON 값 이해하고 choropleth 그려보기

choropleth key_on 설정값 문의

2096

전재웅

작성한 질문수 6

3

강사님 안녕하세요 

[7/9] Geo JSON 값 이해하고 choropleth 그려보기

강의 보면서 choropleth 실습하고 있습니다. 여기서 key_on은 데이터 구조를 따라서 지정하는 줄 알았습니다. 

그래서 features.properties.SIG_KOR_NM 이렇게 했는데 

{'type': 'FeatureCollection',
 'features': [{'type': 'Feature',
   'properties': {'SIG_CD': '11320',
    'SIG_KOR_NM': '도봉구',
    'SIG_ENG_NM': 'Dobong-gu',
    'ESRI_PK': 0,
    'SHAPE_AREA': 0.00211,
    'SHAPE_LEN': 0.239901},

아래와 같은 에러가 발생하더군요.
AttributeError: 'NoneType' object has no attribute 'get'

그래서 여러가지 시도해보던 결과

features에서 s를 빼고 하니까 되던데. feature(지정값).properties.SIG_KOR_NM (실제경로) 이렇게 되나요?

pandas python numpy

답변 6

2

박조은

안녕하세요.

제가 질문의 내용을 제대로 이해 못 했었네요.

아래 내용은 folium 공식문서 입니다. 여기에서 features 로 되어 있더라도 아래와 같은 표기법을 갖도록 하고 있습니다.

foilum 내부에서 아래와 같은 형식을 사용하고 있기 때문에 형식을 맞춰 써달라는 것인데요.

    key_on: string, default None
        Variable in the `geo_data` GeoJSON file to bind the data to. Must
        start with 'feature' and be in JavaScript objection notation.
        Ex: 'feature.id' or 'feature.properties.statename'.

그래서 json 문법에 맞지 않는다고 좋은 의문을 가져주신거 같습니다.

개별 지역의 값을 가져오기 위해서는 feautures 에서 인덱싱으로 값을 가져오는게 맞으나 내부에서 위와 같은 표기법을 써달라고 하고 있습니다.

2

전재웅

빠른 답변 감사합니다.

아래 값을 이렇게 설정해봤는데 역시 안되네요.

key_on='features.0.properties.name',

이건 강사님이 제공해주신 json파일입니다. 

강동구를 호출하려면 geo_json["features"][0]['properties']["name"] 이렇게 호출하는게 맞습니다.

강사님 강의영상에서 제공해주신 답안을 보면 여기도 feature (복수가 아닌 단수)로 설정을 하셨습니다. 

말씀하신데로 key_on이 JSON 경로가 들어간다면 강동구는 0번째니 

["features"][0]['properties']["name"] 

나머지도 그려주기 위해 for문을 사용하여 이런식으로 Choropleth를 매번 호출해야 하지 않나요?

for i in range(0, len(geo_json)):

folium.Choropleth(

    geo_data=geo_json,

    name='choropleth',

    data=df_vs,

    columns=['구', '매장수비교'],

    key_on='features.' + i + '.properties.name',

    fill_color='BuGn',

    fill_opacity=0.7,

    line_opacity=0.2,

    legend_name='매장수 비교'

).add_to(m)

잘 이해가 안됩니다. ㅠㅠ

1

전재웅

감사합니다. 그래서 그런거였군요^^

수업영상을 혹시 개선하실 생각이시면 key_on은  json문법으로 트래킹하는 것으로 설명이 되어 있어 잘못이해할 소지가 있네요.

항상 좋은 영상!! 그리고 빠른 질의응대 감사합니다.

좋은 하루 되세요~

1

박조은

안녕하세요.

수업에서 제공한 json 파일을 사용하셨다면 아래와 같이 불러와야 합니다.

 features[0].properties.SIG_KOR_NM

왜냐면 아래와 같이 features 항목에 대괄호가 있는데요.  

'features': [{'type': 'Feature',

파이썬에서는 [ ] 안의 값을 인덱싱으로 가져올 수 있습니다.

[ ]안에 값을 바로  key 값으로 접근할 수 없습니다.

feature  로 사용하신건 아마도 인덱싱 후 해당 값을 feature 로 받아서 사용하신것 같습니다.

0

freedom07

저도 헷갈렸는데 먼저 질문해주신 분이 있으셨네요 ㅎㅎ감사합니다 ㅎ 
강의에 언급해주시면 좋을 것 같아요. :)

0

박조은

피드백 감사합니다!

말씀해 주신 대로 혼란이 있을 수 있을거 같아요. 다음 업데이트에 반영해 보겠습니다!

좋은하루 되세요!

감사합니다 :)

패키지 설치 에러 ydata-profiling

0

120

2

자세한 설명 부탁드려요 ㅜ

0

176

2

seaborn 라이브러리 호출하였으나 그래프가 안 그려져요

0

287

2

value_counts와 count 차이

0

341

2

안녕하세요 데이터 최신과 관련해서 문의드립니다.

0

205

3

scatterplot질문

0

122

1

강의 화면이 안나옵니다

0

164

2

4분12초 2013년부터 데이터가 없으면 어떻게하나요?..

0

188

2

에러 메시지

1

303

2

그래프 색이 동일하게 나옵니다.

0

308

2

시각화 라이브러리 비교

0

382

2

주피터 노트북 설치

0

390

1

2. 상가 기술통계 아웃풋 자료에서 오류가 납니다

0

226

1

14. distplot g = sns.FacetGrid(df_last, row="지역명", height=1.7, aspect=4) g.map(sns.distplot, "평당분양가격", hist=False, rug=True); 오류

0

178

1

group by agg function failed 에러

0

687

2

빈도수가 1000개 이상인 데이터를 따로 담을 때 코드 질문 있습니다.

0

288

2

주피터 노트북 실행 했는데 앞에 *가 생기고 결과가 나오지 않아요

0

363

3

get_string함수에서 문자 'nan'

0

200

1

seaborn X축 시작 지점 조정 질의의 건

0

213

1

14강 distplot 질의

0

289

1

nbextension 설치 및 셋팅 후 적용이 안되는 이슈

0

477

1

corr = df.corr() 입력시 오류

1

373

1

keyword grid_b is not recognized

0

336

1

%ls data 매직커맨드 사용시 한글 깨짐

0

293

1