如何使用 plotly.express 创建用于映射的 ID
How to Create id for Mapping with plotly.express
我有一个数据框“states”,其中包含每个州的儿童贫困率和 json 名为“us_states”的文件。我想使用 plotly express 创建一个 choropleth 地图,但我正在努力创建 id 列。这是我的全部代码。
import pandas as pd
import json
import plotly.express as px
states = pd.read_csv('https://raw.githubusercontent.com/ngpsu22/Child-Poverty-State-Map/master/poverty_rate_map.csv')
us_states = pd.read_json('https://github.com/ngpsu22/Child-Poverty-State-Map/raw/master/gz_2010_us_040_00_500k.json')
state_id_map = {}
for feature in us_states['features']:
feature['id'] = feature['properties']['NAME']
state_id_map[feature['properties']['STATE']] = feature['id']
states['id'] = states['state'].apply(lambda x: state_id_map[x])
但是我得到这个错误:
键错误:'Maine'
由于缅因州在我的数据框中排在第一位,这意味着出了点问题。
有什么建议吗?
us_states.features
是一个 dict
- 使用
pd.json_normalize
将 dict
提取到数据框中。
'geometry.coordinates'
每一行都是一个大的嵌套列表
- 不清楚循环应该做什么,可以使用
pd.merge
. 将来自两个数据帧的数据连接在一起以便于访问
us_states = pd.read_json('https://github.com/ngpsu22/Child-Poverty-State-Map/raw/master/gz_2010_us_040_00_500k.json')
# convert the dict to dataframe
us_states_features = pd.json_normalize(us_states.features, sep='_')
# the Name column is addressed with
us_states_features['properties_Name']
# join the two dataframe into one
df = pd.merge(states, us_states_features, left_on='state', right_on='properties_NAME')
我有一个数据框“states”,其中包含每个州的儿童贫困率和 json 名为“us_states”的文件。我想使用 plotly express 创建一个 choropleth 地图,但我正在努力创建 id 列。这是我的全部代码。
import pandas as pd
import json
import plotly.express as px
states = pd.read_csv('https://raw.githubusercontent.com/ngpsu22/Child-Poverty-State-Map/master/poverty_rate_map.csv')
us_states = pd.read_json('https://github.com/ngpsu22/Child-Poverty-State-Map/raw/master/gz_2010_us_040_00_500k.json')
state_id_map = {}
for feature in us_states['features']:
feature['id'] = feature['properties']['NAME']
state_id_map[feature['properties']['STATE']] = feature['id']
states['id'] = states['state'].apply(lambda x: state_id_map[x])
但是我得到这个错误: 键错误:'Maine' 由于缅因州在我的数据框中排在第一位,这意味着出了点问题。
有什么建议吗?
us_states.features
是一个dict
- 使用
pd.json_normalize
将dict
提取到数据框中。 'geometry.coordinates'
每一行都是一个大的嵌套列表- 不清楚循环应该做什么,可以使用
pd.merge
. 将来自两个数据帧的数据连接在一起以便于访问
us_states = pd.read_json('https://github.com/ngpsu22/Child-Poverty-State-Map/raw/master/gz_2010_us_040_00_500k.json')
# convert the dict to dataframe
us_states_features = pd.json_normalize(us_states.features, sep='_')
# the Name column is addressed with
us_states_features['properties_Name']
# join the two dataframe into one
df = pd.merge(states, us_states_features, left_on='state', right_on='properties_NAME')