Как создать идентификатор для отображения с помощью plotly. express - PullRequest
1 голос
/ 03 августа 2020

У меня есть «состояния» фрейма данных, в котором есть уровень детской бедности каждого штата, и json файл с именем «us_states». Я хочу создать карту choropleth, используя plotly express, но мне не удается создать столбец 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])

Но я получаю эту ошибку: KeyError: 'Maine' Что, поскольку штат Мэн первым в моем фрейме данных означает, что что-то идет не так.

Любые предложения ?

1 Ответ

1 голос
/ 03 августа 2020
  • us_states.features - это dict
  • Используйте pd.json_normalize для извлечения dict в фрейм данных.
  • 'geometry.coordinates' для каждой строки - это большой вложенный list
  • Непонятно, что должен делать l oop, данные из двух фреймов данных можно объединить для облегчения доступа, используя 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')
...