인프런 커뮤니티 질문&답변

전재웅님의 프로필 이미지
전재웅

작성한 질문수

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

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

choropleth key_on 설정값 문의

작성

·

1.9K

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 (실제경로) 이렇게 되나요?

답변 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

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

0

박조은님의 프로필 이미지
박조은
지식공유자

피드백 감사합니다!

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

좋은하루 되세요!

감사합니다 :)

전재웅님의 프로필 이미지
전재웅

작성한 질문수

질문하기