Фон
Я смотрю на Набор данных коронавируса из CSSEGISandData (github.com/CSSEGISandData/COVID-19.git). Я пытаюсь создать сюжетно-картографическую карту , которая показывает случаев для каждого округа США .
Вот пример набора данных csv из CSSEGISandData. Я объединил несколько дней в один файл:
Province/State Country/Region Last Update Confirmed \
259 Chicago US 2020-01-24 17:00:00 1.0
3028 Orange, CA US 2020-02-01 19:53:00 1.0
2445 San Benito, CA US 2020-02-03 03:53:02 2.0
3181 San Antonio, TX US 2020-02-13 18:53:02 1.0
4762 Humboldt County, CA US 2020-02-21 05:13:09 1.0
Deaths Recovered Latitude Longitude file \
259 0.0 0.0 NaN NaN 01-24-2020.csv
3028 0.0 0.0 NaN NaN 02-01-2020.csv
2445 0.0 0.0 NaN NaN 02-24-2020.csv
3181 0.0 0.0 29.4241 -98.4936 03-04-2020.csv
4762 0.0 0.0 NaN NaN 02-27-2020.csv
Задача
Я хочу изменить этот пример графика (https://plot.ly/python/mapbox-county-choropleth/) и используйте округа из моего dataframe, для этого мне сначала нужно:
- Сопоставить все округа в моем файле с кодами в фипсах.
Я нашел здесь список кодов fips (https://github.com/kjhealy/fips-codes):
fips name state
0 0 UNITED STATES NaN
1 1000 ALABAMA NaN
2 1001 Autauga County AL
3 1003 Baldwin County AL
4 1005 Barbour County AL
Как создать новый столбец в моем pandas датафрейм с правильным кодом fips?
Вот мой код, импортирующий данные COVID и коды fips
!git clone https://github.com/CSSEGISandData/COVID-19.git
#@title Import and Option to show print more data
import pandas as pd
import glob
#Get the coronavirus data for the US
path = r'/content/COVID-19/csse_covid_19_data/csse_covid_19_daily_reports' # use your path
all_files = glob.glob(path + "/*.csv") #collect all files in one
li = []
for filename in all_files:
df = pd.read_csv(filename, index_col=None, header=0)
li.append(df)
df = pd.concat(li, axis=0, ignore_index=True, sort=False) #one dataframe
filter_USA=frame['Country/Region']=='US'
USA= frame[filter_USA]
print (USA.head())
#Get the county data for the US with fips
county_url= 'https://raw.githubusercontent.com/kjhealy/fips-codes/master/state_and_county_fips_master.csv'
county = pd.read_csv(county_url)
print ( county.head())
Теперь мне нужно сопоставить названия провинций / штатов США с названиями округов и присвойте значение fips.
#somethin like
for all USA['Province/State'] match to county.name
USA['fips'] = county match fips value
EDIT
Установка более длинной версии для фрейма данных для отображения различных проблем с именами:
- проблема в верхнем и нижнем регистре
- некоторые названия городов, а не округа
- некоторые добавили записи в них
3027 Los Angeles, CA
2369 Santa Clara, CA
2003 San Benito, CA
2310 Madison, WI
2470 Seattle, WA
6175 Chicago, IL
2237 San Diego County, CA
2805 San Diego County, CA
1765 San Antonio, TX
3657 Humboldt County, CA
737 Santa Clara, CA
3629 San Diego County, CA
2468 Sacramento County, CA
1543 Ashland, NE
1549 Travis, CA
1560 Lackland, TX
420 Lackland, TX (From Diamond Princess)
410 Travis, CA (From Diamond Princess)
404 Omaha, NE (From Diamond Princess)
6436 Omaha, NE (From Diamond Princess)
4289 Lackland, TX (From Diamond Princess)
5047 Travis, CA (From Diamond Princess)
2421 Unassigned Location (From Diamond Princess)
1769 Tempe, AZ
303 Unassigned Location (From Diamond Princess)
4981 Unassigned Location (From Diamond Princess)
5015 Sacramento County, CA
4208 Unassigned Location (From Diamond Princess)