Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Geog 80 Final
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Geog 80 Final - Ryan Meyer\n",
"## COVID-19 Pandemic in the United States\n",
"### click cells -> run all to ensure the map works properly"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Section 1: Data loading and processing\n",
"First, we load in the covid case data, US Census 2019 population estimates, as well as some GeoJSON data containing county geometry. Some cleaning needs to be done to match the format of FIPS codes between datasets. Additionally, population dataset needs to be cleaned, then joined via census area names. Finally, after dividing the joined table by the data from the US population table, we yield the final dataset: a dataframe of covid cases per capita for each county for each day. This will be used to look at how COVID-19 spread across the United States over the course of 2020."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>UID</th>\n",
" <th>iso2</th>\n",
" <th>iso3</th>\n",
" <th>code3</th>\n",
" <th>FIPS</th>\n",
" <th>Admin2</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Lat</th>\n",
" <th>Long_</th>\n",
" <th>...</th>\n",
" <th>11/26/20</th>\n",
" <th>11/27/20</th>\n",
" <th>11/28/20</th>\n",
" <th>11/29/20</th>\n",
" <th>11/30/20</th>\n",
" <th>12/1/20</th>\n",
" <th>12/2/20</th>\n",
" <th>POPESTIMATE2019</th>\n",
" <th>CTY_OG</th>\n",
" <th>Area_Name</th>\n",
" </tr>\n",
" <tr>\n",
" <th>place</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Abbeville,South Carolina</th>\n",
" <td>84045001</td>\n",
" <td>US</td>\n",
" <td>USA</td>\n",
" <td>840</td>\n",
" <td>45001</td>\n",
" <td>Abbeville</td>\n",
" <td>South Carolina</td>\n",
" <td>US</td>\n",
" <td>34.223334</td>\n",
" <td>-82.461707</td>\n",
" <td>...</td>\n",
" <td>380.804827</td>\n",
" <td>386.512823</td>\n",
" <td>391.405390</td>\n",
" <td>391.813104</td>\n",
" <td>394.259388</td>\n",
" <td>396.297957</td>\n",
" <td>398.744241</td>\n",
" <td>10000.0</td>\n",
" <td>Abbeville County</td>\n",
" <td>Abbeville County, South Carolina</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Acadia,Louisiana</th>\n",
" <td>84022001</td>\n",
" <td>US</td>\n",
" <td>USA</td>\n",
" <td>840</td>\n",
" <td>22001</td>\n",
" <td>Acadia</td>\n",
" <td>Louisiana</td>\n",
" <td>US</td>\n",
" <td>30.295065</td>\n",
" <td>-92.414197</td>\n",
" <td>...</td>\n",
" <td>625.997260</td>\n",
" <td>636.634701</td>\n",
" <td>636.634701</td>\n",
" <td>641.792248</td>\n",
" <td>641.147554</td>\n",
" <td>649.367395</td>\n",
" <td>657.426062</td>\n",
" <td>10000.0</td>\n",
" <td>Acadia Parish</td>\n",
" <td>Acadia Parish, Louisiana</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Accomack,Virginia</th>\n",
" <td>84051001</td>\n",
" <td>US</td>\n",
" <td>USA</td>\n",
" <td>840</td>\n",
" <td>51001</td>\n",
" <td>Accomack</td>\n",
" <td>Virginia</td>\n",
" <td>US</td>\n",
" <td>37.767072</td>\n",
" <td>-75.632346</td>\n",
" <td>...</td>\n",
" <td>409.704171</td>\n",
" <td>411.560837</td>\n",
" <td>414.655279</td>\n",
" <td>416.202500</td>\n",
" <td>416.511945</td>\n",
" <td>419.915831</td>\n",
" <td>420.534720</td>\n",
" <td>10000.0</td>\n",
" <td>Accomack County</td>\n",
" <td>Accomack County, Virginia</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ada,Idaho</th>\n",
" <td>84016001</td>\n",
" <td>US</td>\n",
" <td>USA</td>\n",
" <td>840</td>\n",
" <td>16001</td>\n",
" <td>Ada</td>\n",
" <td>Idaho</td>\n",
" <td>US</td>\n",
" <td>43.452658</td>\n",
" <td>-116.241552</td>\n",
" <td>...</td>\n",
" <td>505.204667</td>\n",
" <td>515.400125</td>\n",
" <td>521.837176</td>\n",
" <td>526.675346</td>\n",
" <td>533.673043</td>\n",
" <td>542.809503</td>\n",
" <td>550.762375</td>\n",
" <td>10000.0</td>\n",
" <td>Ada County</td>\n",
" <td>Ada County, Idaho</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Adair,Iowa</th>\n",
" <td>84019001</td>\n",
" <td>US</td>\n",
" <td>USA</td>\n",
" <td>840</td>\n",
" <td>19001</td>\n",
" <td>Adair</td>\n",
" <td>Iowa</td>\n",
" <td>US</td>\n",
" <td>41.330756</td>\n",
" <td>-94.471059</td>\n",
" <td>...</td>\n",
" <td>599.832215</td>\n",
" <td>599.832215</td>\n",
" <td>615.212528</td>\n",
" <td>616.610738</td>\n",
" <td>616.610738</td>\n",
" <td>620.805369</td>\n",
" <td>626.398210</td>\n",
" <td>10000.0</td>\n",
" <td>Adair County</td>\n",
" <td>Adair County, Iowa</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 330 columns</p>\n",
"</div>"
],
"text/plain": [
" UID iso2 iso3 code3 FIPS Admin2 \\\n",
"place \n",
"Abbeville,South Carolina 84045001 US USA 840 45001 Abbeville \n",
"Acadia,Louisiana 84022001 US USA 840 22001 Acadia \n",
"Accomack,Virginia 84051001 US USA 840 51001 Accomack \n",
"Ada,Idaho 84016001 US USA 840 16001 Ada \n",
"Adair,Iowa 84019001 US USA 840 19001 Adair \n",
"\n",
" Province_State Country_Region Lat \\\n",
"place \n",
"Abbeville,South Carolina South Carolina US 34.223334 \n",
"Acadia,Louisiana Louisiana US 30.295065 \n",
"Accomack,Virginia Virginia US 37.767072 \n",
"Ada,Idaho Idaho US 43.452658 \n",
"Adair,Iowa Iowa US 41.330756 \n",
"\n",
" Long_ ... \\\n",
"place ... \n",
"Abbeville,South Carolina -82.461707 ... \n",
"Acadia,Louisiana -92.414197 ... \n",
"Accomack,Virginia -75.632346 ... \n",
"Ada,Idaho -116.241552 ... \n",
"Adair,Iowa -94.471059 ... \n",
"\n",
" 11/26/20 11/27/20 11/28/20 11/29/20 \\\n",
"place \n",
"Abbeville,South Carolina 380.804827 386.512823 391.405390 391.813104 \n",
"Acadia,Louisiana 625.997260 636.634701 636.634701 641.792248 \n",
"Accomack,Virginia 409.704171 411.560837 414.655279 416.202500 \n",
"Ada,Idaho 505.204667 515.400125 521.837176 526.675346 \n",
"Adair,Iowa 599.832215 599.832215 615.212528 616.610738 \n",
"\n",
" 11/30/20 12/1/20 12/2/20 POPESTIMATE2019 \\\n",
"place \n",
"Abbeville,South Carolina 394.259388 396.297957 398.744241 10000.0 \n",
"Acadia,Louisiana 641.147554 649.367395 657.426062 10000.0 \n",
"Accomack,Virginia 416.511945 419.915831 420.534720 10000.0 \n",
"Ada,Idaho 533.673043 542.809503 550.762375 10000.0 \n",
"Adair,Iowa 616.610738 620.805369 626.398210 10000.0 \n",
"\n",
" CTY_OG Area_Name \n",
"place \n",
"Abbeville,South Carolina Abbeville County Abbeville County, South Carolina \n",
"Acadia,Louisiana Acadia Parish Acadia Parish, Louisiana \n",
"Accomack,Virginia Accomack County Accomack County, Virginia \n",
"Ada,Idaho Ada County Ada County, Idaho \n",
"Adair,Iowa Adair County Adair County, Iowa \n",
"\n",
"[5 rows x 330 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>DATE</th>\n",
" <th>LAT</th>\n",
" <th>LON</th>\n",
" <th>HEADLINE</th>\n",
" <th>DESCRIPTION</th>\n",
" <th>LINK</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1/22/20</td>\n",
" <td>47.442224</td>\n",
" <td>-122.302510</td>\n",
" <td>First Travel-related Case of 2019 Novel Corona...</td>\n",
" <td>This first instance of a 2019-nCoV infected re...</td>\n",
" <td>https://www.cdc.gov/media/releases/2020/p0121-...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1/31/20</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>WHO Issues Global Health Emergency</td>\n",
" <td>As case numbers quickly began to jump exponent...</td>\n",
" <td>https://www.ajmc.com/view/what-were-reading-gl...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2/3/20</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>US Declares Public Health Emergency</td>\n",
" <td>3 days after the WHO, the Trump administration...</td>\n",
" <td>https://www.jurist.org/news/2020/02/trump-admi...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2/25/20</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>CDC Says COVID-19 Is Heading toward Pandemic S...</td>\n",
" <td>Pandemics have 3 main factors: illness resulti...</td>\n",
" <td>https://www.cdc.gov/media/releases/2020/t0225-...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2/26/20</td>\n",
" <td>42.359896</td>\n",
" <td>-71.051103</td>\n",
" <td>Biogen meeting leads to COVID-19 spread in mul...</td>\n",
" <td>After a February meeting with senior executive...</td>\n",
" <td>https://www.nytimes.com/2020/12/11/us/biogen-c...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" DATE LAT LON \\\n",
"0 1/22/20 47.442224 -122.302510 \n",
"1 1/31/20 0.000000 0.000000 \n",
"2 2/3/20 0.000000 0.000000 \n",
"3 2/25/20 0.000000 0.000000 \n",
"4 2/26/20 42.359896 -71.051103 \n",
"\n",
" HEADLINE \\\n",
"0 First Travel-related Case of 2019 Novel Corona... \n",
"1 WHO Issues Global Health Emergency \n",
"2 US Declares Public Health Emergency \n",
"3 CDC Says COVID-19 Is Heading toward Pandemic S... \n",
"4 Biogen meeting leads to COVID-19 spread in mul... \n",
"\n",
" DESCRIPTION \\\n",
"0 This first instance of a 2019-nCoV infected re... \n",
"1 As case numbers quickly began to jump exponent... \n",
"2 3 days after the WHO, the Trump administration... \n",
"3 Pandemics have 3 main factors: illness resulti... \n",
"4 After a February meeting with senior executive... \n",
"\n",
" LINK \n",
"0 https://www.cdc.gov/media/releases/2020/p0121-... \n",
"1 https://www.ajmc.com/view/what-were-reading-gl... \n",
"2 https://www.jurist.org/news/2020/02/trump-admi... \n",
"3 https://www.cdc.gov/media/releases/2020/t0225-... \n",
"4 https://www.nytimes.com/2020/12/11/us/biogen-c... "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import json\n",
"from urllib.request import urlopen\n",
"import warnings\n",
"\n",
"caseDataFile = \"https://raw.githubusercontent.com/ryanpmeyer/Geog80Final/master/data/time_series_covid19_confirmed_US.csv\"\n",
"populationDataFile = \"https://raw.githubusercontent.com/ryanpmeyer/Geog80Final/master/data/co-est2019-alldata.csv\"\n",
"geoJSONFile = 'https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json'\n",
"eventsFile = 'https://raw.githubusercontent.com/ryanpmeyer/Geog80Final/master/data/EVENTS.csv'\n",
"\n",
"def getData():\n",
" with urlopen(geoJSONFile) as response:\n",
" counties = json.load(response)\n",
"\n",
" eventData = pd.read_csv(eventsFile)\n",
"\n",
" # get covid case data, clean FIPS code\n",
" covid_cases_raw = pd.read_csv(caseDataFile)\n",
" covid_cases = covid_cases_raw.dropna().reindex()\n",
" old_fips = covid_cases['FIPS'].astype('int32').astype(str)\n",
" max_fips_code_len = max([len(x) for x in old_fips])\n",
" new_fips = list(old_fips)\n",
" for i in range(len(old_fips)):\n",
" while len(new_fips[i]) < max_fips_code_len:\n",
" new_fips[i] = '0' + new_fips[i]\n",
" covid_cases['FIPS'] = new_fips\n",
"\n",
" # get US population data, clean county names\n",
" us_pop_raw = pd.read_csv(populationDataFile, encoding='latin1')\n",
" us_pop_raw['CTY_OG'] = us_pop_raw['CTYNAME']\n",
" us_pop = us_pop_raw[us_pop_raw['CTYNAME'] != us_pop_raw['STNAME']]\n",
" strings2remove = [' County',' Borough',' Census Area',' Municipality',' Parish', ' city', ' City']\n",
" for string in strings2remove:\n",
" us_pop['CTYNAME'] = us_pop['CTYNAME'].str.replace(string,\"\",case=False)\n",
" us_pop['CTYNAME'] = us_pop['CTYNAME'].str.strip()\n",
"\n",
" # remove data from population with duplicate locations\n",
" indicies_to_remove = []\n",
" for state in set(us_pop['STNAME']):\n",
" counties_in_state = us_pop[us_pop['STNAME']==state]\n",
" for cty in set(counties_in_state['CTYNAME']):\n",
" rows = counties_in_state[counties_in_state['CTYNAME']==cty]\n",
" if len(rows) > 1:\n",
" rows_index = rows.index\n",
" highest_pop_i = rows['POPESTIMATE2019'].argmax()\n",
" for i in rows_index:\n",
" if i != highest_pop_i:\n",
" indicies_to_remove.append(i)\n",
" us_pop.drop(index=indicies_to_remove,inplace=True)\n",
" us_pop.reindex(copy=False)\n",
"\n",
" # join tables and divide case nums by population\n",
" us_pop['place'] = us_pop['CTYNAME'] + ',' + us_pop['STNAME']\n",
" covid_cases['place'] = covid_cases['Admin2'] + ',' + covid_cases['Province_State']\n",
" joined = covid_cases.set_index('place').join(us_pop.set_index(\"place\")[['POPESTIMATE2019','CTY_OG']],\n",
" how='inner', lsuffix='County', rsuffix='').sort_index()\n",
"\n",
" # set county names back to original\n",
" joined['Area_Name'] = joined['CTY_OG'] + ', '+joined['Province_State']\n",
" \n",
" # get case data per 10000 people\n",
" for col in joined.columns[11:len(joined.columns)-2]:\n",
" joined[col] = joined[col] / joined['POPESTIMATE2019'] * 10000 # per 10000 people\n",
"\n",
"\n",
"\n",
" used_fips = set(joined['FIPS'])\n",
" # remove data from GeoJSON without matching FIPS code in case data\n",
" \n",
" cleaned_features = list(counties['features'])\n",
" for feature in counties['features']:\n",
" if feature['id'] not in used_fips:\n",
" cleaned_features.remove(feature)\n",
" counties['features'] = cleaned_features\n",
"\n",
" return counties, joined, eventData\n",
"\n",
"with warnings.catch_warnings():\n",
" warnings.simplefilter(\"ignore\")\n",
" counties, caseData, eventData = getData()\n",
"display(caseData.head(5))\n",
"display(eventData.head(5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Section 2: Choropleth Map\n",
"\n",
"Now we have data for each US county's confirmed cases per capita for each day from 1/22 - 12/2. Next we will look at a choropleth map of this data. The following code constructs an interactive map and creates widgets which allow the data to be explored chronologically."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"from ipywidgets import interact, interactive, fixed, interact_manual\n",
"import ipyleaflet\n",
"import ipywidgets as widgets\n",
"import datetime\n",
"import branca\n",
"import numpy as np\n",
"\n",
"absolute = False\n",
"NUMDAYS = 315\n",
"STARTDATE = datetime.date(2020,1,22)\n",
"date = STARTDATE\n",
"old_date = None\n",
"event_widget = None\n",
"event_marker = None\n",
"choropleth_layer = None\n",
"legend_control = ipyleaflet.LegendControl({}, name = 'cases/10k residents', position = 'bottomright')\n",
"date_picker = None\n",
"hover_popup = None\n",
"data_series = caseData['1/22/20']\n",
"DATES = [STARTDATE + datetime.timedelta(days=x) for x in range(NUMDAYS)]\n",
"max_caseload = max(caseData['12/2/20'])\n",
"NUMEVENTS = len(eventData['DATE'])\n",
"\n",
"\n",
"\n",
"def get_colorscale(max_val=max_caseload):\n",
" return branca.colormap.LinearColormap(((144, 201, 222),\n",
" (214, 57, 26)),\n",
" vmin=0,vmax=max_val)\n",
"\n",
"def get_date_string(date):\n",
" date_string = date.strftime(\"%x\") # format date into D/M/Y\n",
" if date_string[0] == '0': # no leading zeros in month\n",
" date_string = date_string[1:]\n",
" if date_string[date_string.find('/')+1] == '0': # no leading zeros in day\n",
" date_string = date_string[0:date_string.find('/')+1] + date_string[date_string.find('/')+2:]\n",
" return date_string\n",
"\n",
"def get_date_from_string(string):\n",
" year = 2020\n",
" month = int(string[:string.find('/')])\n",
" day = string[string.find('/')+1:]\n",
" day = int(day[:day.find('/')])\n",
" return datetime.date(year,month,day)\n",
"\n",
"def get_styler():\n",
" global data_series, absolute\n",
" def style(feature):\n",
" max_val = max_caseload if absolute else max(data_series)\n",
" colorscale = get_colorscale(max_val)\n",
" value = data_series.get(feature['id'])\n",
" if value is None:\n",
" value = -1\n",
" return {\n",
" 'color': 'black',\n",
" 'fillColor': colorscale(value) if value != -1 else 'black'\n",
" }\n",
" return style\n",
"\n",
"def get_legend():\n",
" global data_series, absolute\n",
" max_val = max_caseload if absolute else max(data_series)\n",
" colorscale = get_colorscale(max_val)\n",
" legend_dict = {str(round(val,4)):colorscale(val) for val in np.linspace(0,max_val,6)}\n",
" return legend_dict\n",
"\n",
"def next_button(b):\n",
" tomorrow = date+datetime.timedelta(days=1)\n",
" next_date = None\n",
" for event_date_str in eventData['DATE']:\n",
" event_date = get_date_from_string(event_date_str)\n",
" if event_date >= tomorrow:\n",
" next_date = event_date\n",
" break\n",
" if not next_date:\n",
" return\n",
" update(event_date)\n",
"\n",
"def prev_button(b):\n",
" prev_date = date\n",
" for event_date_str in eventData['DATE']:\n",
" event_date = get_date_from_string(event_date_str)\n",
" if event_date < prev_date:\n",
" prev_date = event_date\n",
" if not prev_date == date:\n",
" return\n",
" update(prev_date)\n",
" \n",
"def hover_handler(event=None, feature=None, id=None, properties=None):\n",
" case_val = round(data_series[id], 4)\n",
" hover_popup.value = '<b>'+caseData.set_index('FIPS')['Area_Name'][id]+'</b>: '+str(case_val)\n",
" \n",
"def update_event(new_date):\n",
" global event_widget,event_marker\n",
" events = eventData[eventData['DATE']==new_date]\n",
" event_widget.value = ''\n",
" if len(events):\n",
" for event in [events.loc[i] for i in events.index]:\n",
" event_marker.location = (event['LAT'],event['LON'])\n",
" event_widget.value += (\n",
" \"<h1><b>\"+event['HEADLINE']+\"</b>:<br></h1>\"+\n",
" event['DESCRIPTION']+\"<br>\"+\n",
" \"<a href=\\'\"+event['LINK']+\"\\'>[SOURCE]</a><br>\"\n",
" )\n",
" else:\n",
" event_marker.location = (0,0)\n",
" event_widget.value = ''\n",
"\n",
"\n",
"def get_choropleth(start_date):\n",
" global absolute,date,old_date,hover_popup,event_widget,event_marker,choropleth_layer,date_picker,data_series\n",
" old_date = start_date\n",
" curr_event = 0\n",
" date_string = get_date_string(date)\n",
" data_series = caseData.set_index('FIPS')[date_string]\n",
"\n",
" m = ipyleaflet.Map(center=[48,-102],zoom=4)\n",
"\n",
" choropleth_layer = ipyleaflet.GeoJSON(\n",
" data=counties,\n",
" style={\n",
" 'opacity': 1.,\n",
" 'fillOpacity': 0.5,\n",
" 'weight': .3\n",
" },\n",
" hover_style={\n",
" 'fillOpacity': 1.,\n",
" 'weight': .6\n",
" },\n",
" style_callback=get_styler()\n",
" )\n",
" m.add_layer(choropleth_layer)\n",
"\n",
" # UI changes upon hover action\n",
" hover_popup = widgets.HTML()\n",
" hover_popup.layout.margin = '0px 20px 20px 20px'\n",
" m.add_control(ipyleaflet.WidgetControl(widget=hover_popup,position='bottomleft'))\n",
" choropleth_layer.on_hover(hover_handler)\n",
"\n",
" date_picker = widgets.DatePicker(value=STARTDATE, enabled_dates=DATES, description='Date: ',disabled=True)\n",
" date_control = ipyleaflet.WidgetControl(widget=date_picker,position='topright')\n",
" m.add_control(date_control)\n",
"\n",
" next_date_button = widgets.Button(description='Next Event')\n",
" prev_date_button = widgets.Button(description='Prev Event')\n",
" next_date_button.on_click(next_button)\n",
" display(next_date_button)\n",
" prev_date_button.on_click(prev_button)\n",
" display(prev_date_button)\n",
" \n",
" # Markers for event information (\"essay\" part)\n",
" event_marker = ipyleaflet.Marker()\n",
" event_marker.visibile = False\n",
" m.add_layer(event_marker)\n",
" event_widget = widgets.HTML()\n",
" event_widget.layout.margin = '0px 20px 20px 20px'\n",
" \n",
" # legend\n",
" legend_control.legends = get_legend()\n",
" m.add_control(legend_control)\n",
"\n",
" return m\n",
"\n",
"def update(new_date):\n",
" global date,old_date,date_picker,hover_popup,choropleth_layer,data_series,legend_control\n",
" if new_date not in DATES:\n",
" date_picker.value = old_date\n",
" return;\n",
" date_picker.value = new_date\n",
" old_date = date\n",
" date = new_date\n",
" date_string = get_date_string(date)\n",
" hover_popup.value = \"Updating map to: \"+ date_string\n",
" data_series = caseData.set_index('FIPS')[date_string]\n",
" legend_control.legends = get_legend() # update legend\n",
" choropleth_layer.style_callback = get_styler() # update style (colors)\n",
" update_event(date_string)\n",
" hover_popup.value = \"Map updated.\"\n",
"\n",
"\n",
"def get_interactive_map(start_date=STARTDATE):\n",
" m = get_choropleth(start_date)\n",
" interact(update, new_date=date_picker)\n",
" display(event_widget)\n",
" return m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To use the map, click the \"next event\" button. It will take a moment to load in the new data, but you will be presented with a news headline, description, and link to the source of the story. The map will display the covid cases per 10 thousand residents in each county. The final date in the dataset is December 2nd. I encourage you to remember the stories presented and follow along how the map changes in the following weeks. COVID-19 has a latent period between infection and symptoms, and exponential spreading following a superspreader event takes a few weeks to manifest as well."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7f65bf282a4445adaee4ef89b7276ee1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(description='Next Event', style=ButtonStyle())"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8ca88086379145f6b20a1131b262af64",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Button(description='Prev Event', style=ButtonStyle())"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e7a8c457f9de42f2bd23febdf429fbee",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(DatePicker(value=datetime.date(2020, 1, 22), description='Date: ', disabled=True), Outpu…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3b504f0b17cb436ba161702486a6f93c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HTML(value=\"<h1><b>First Travel-related Case of 2019 Novel Coronavirus Detected in United States.</b>:<br></h1…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4bfc51e4134741fe9230fff6b44f4aa8",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Map(center=[48, -102], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_t…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"get_interactive_map()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Section 3: Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In short, this map takes you through the growth and spread of COVID-19 across the United States. It is important to note that the color scale for the choropleth is relative, meaning for each date the deepest red is reserved for the county with the highest cases per capita. This means that when the map is redder overall, it suggests that COVID-19 is spreading evenly throughout the counties rather than being concentrated within hot spots. This is the trend that is observed overall: despite various prevention policies and measures designed to curb the spreading of COVID-19, time and again case spikes originate in singular locations before spreading outwards radially into neighboring regions. Super spreading events precede large shifts from blue to red in the general area they occurred in. States which roll back pandemic restrictions or reopen businesses while the virus’ spread remains uncontrolled see massive breakouts which do not cease to this day. The end result is an overwhelming sense of dread, scrolling along the timeline of the map. Dating back to as early as January, it was clear to informed newsreaders that the virus would be no joke. What followed has been nearly a full year of little collective action, and a nation that gets sicker and sicker with no clear end in sight.\n",
"\n",
"Worst of all, what is never observed on this map are clear 1st and 2nd “waves” of coronavirus. Although many media headlines claim that the current record highs in case and death numbers are a “second wave” of the virus, the true reality is that COVID-19 never really stopped spreading. Any pauses in the acceleration of the virus were brief and quickly countered by new, larger exposures in other places. The map begins as a clean blue before COVID-19 hotspots appear like pimples on skin. These red splotches sometimes go away, as is the case with several of the early spikes which were swiftly dealt with and carefully managed by local health officials. In other cases, what initially appears as events localized to a single county spirals into a massive epidemic plaguing entire groups of states. What remains is a single, inevitable takeaway: this virus is a significant danger, and absolutely will not go away on its own. The only way to survive such exponential growth is to ensure the isolation and quarantine of every single exposure before the law of large numbers takes hold. But looking at the final few months of data, it seems that we may already be past the point of no return.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Coronavirus data: https://github.com/CSSEGISandData/COVID-19\n",
"\n",
"Dong, E., Du, H., &amp; Gardner, L. (2020, February 19). An interactive web-based dashboard to track COVID-19 in ... Retrieved December 2, 2020, from https://www.thelancet.com/journals/laninf/article/PIIS1473-3099(20)30120-1/fulltext\n",
"\n",
"Aggregated data sources:\n",
"\n",
"- Aggregated data sources:\n",
" - World Health Organization (WHO): https://www.who.int/\n",
" - European Centre for Disease Prevention and Control (ECDC): https://www.ecdc.europa.eu/en/geographical-distribution-2019-ncov-cases \n",
" - DXY.cn. Pneumonia. 2020. http://3g.dxy.cn/newh5/view/pneumonia\n",
" - US CDC: https://www.cdc.gov/coronavirus/2019-ncov/index.html\n",
" - BNO News: https://bnonews.com/index.php/2020/02/the-latest-coronavirus-cases/\n",
" - WorldoMeters: https://www.worldometers.info/coronavirus/ \n",
" - 1Point3Arces: https://coronavirus.1point3acres.com/en \n",
" - COVID Tracking Project: https://covidtracking.com/data. (US Testing and Hospitalization Data. We use the maximum reported value from \"Currently\" and \"Cumulative\" Hospitalized for our hospitalization number reported for each state.)\n",
" - Los Angeles Times: https://www.latimes.com/projects/california-coronavirus-cases-tracking-outbreak/\n",
" - The Mercury News: https://www.mercurynews.com/tag/coronavirus/\n",
"\n",
"- US data sources at the state (Admin1) or county/city (Admin2) level: \n",
" - Washington State Department of Health: https://www.doh.wa.gov/emergencies/coronavirus\n",
" - Maryland Department of Health: https://coronavirus.maryland.gov/\n",
" - New York State Department of Health: https://health.data.ny.gov/Health/New-York-State-Statewide-COVID-19-Testing/xdss-u53e/data\n",
" - New York City Health Department: https://www1.nyc.gov/site/doh/covid/covid-19-data.page\n",
" - NYC Department of Health and Mental Hygiene: https://www1.nyc.gov/site/doh/covid/covid-19-data.page and https://github.com/nychealth/coronavirus-data\n",
" - Florida Department of Health Dashboard: https://services1.arcgis.com/CY1LXxl9zlJeBuRZ/arcgis/rest/services/Florida_COVID19_Cases/FeatureServer/0\n",
" and https://fdoh.maps.arcgis.com/apps/opsdashboard/index.html#/8d0de33f260d444c852a615dc7837c86\n",
" - Colorado: https://covid19.colorado.gov/covid-19-data\n",
" - Virginia: https://www.vdh.virginia.gov/coronavirus/\n",
" - Northern Mariana Islands CNMI Department of Public Health: https://cnmichcc.maps.arcgis.com/apps/opsdashboard/index.html#/4061b674fc964efe84f7774b7979d2b5\n",
" - Missouri Department of Health: https://www.arcgis.com/apps/MapSeries/index.html?appid=8e01a5d8d8bd4b4f85add006f9e14a9d\n",
" - Missouri: Nodaway County: https://www.nodawaypublichealth.org/\n",
" - Missouri: St. Louis City Department of Health: https://www.stlouis-mo.gov/covid-19/data/#totalsByDate\n",
" - Missouri: St. Louis County: https://stlcorona.com/resources/covid-19-statistics1/\n",
" - Massachusetts: https://www.mass.gov/info-details/covid-19-response-reporting\n",
" - Michigan: https://www.michigan.gov/coronavirus/0,9753,7-406-98163_98173---,00.html \n",
" - Illinois Department of Public Health: https://dph.illinois.gov/covid19\n",
" - Indiana State Department of Health: https://hub.mph.in.gov/dataset?q=COVID\n",
" - Connecticut Department of Public Health: https://data.ct.gov/stories/s/COVID-19-data/wa3g-tfvc/\n",
" - Ohio Department of Health: https://coronavirus.ohio.gov/wps/portal/gov/covid-19/home\n",
" - Oregon Office of Emergency Management: https://experience.arcgis.com/experience/fff9f83827c5461583cd014fdf4587de\n",
" - Tennessee Department of Health: https://www.tn.gov/health/cedep/ncov.html\n",
" - Rhode Island Department of Health: https://ri-department-of-health-covid-19-data-rihealth.hub.arcgis.com/\n",
" - Wisconsin Department of Health Services: https://www.dhs.wisconsin.gov/covid-19/data.htm\n",
" - North Carolina City of Greenville GIS: https://www.arcgis.com/apps/opsdashboard/index.html#/7aeac695cafa4065ba1505b1cfa72747\n",
" - Iowa State Government: https://coronavirus.iowa.gov/\n",
" - Minnesota Department of Health: https://www.health.state.mn.us/diseases/coronavirus/situation.html\n",
" - Alabama Public Health: https://www.alabamapublichealth.gov/covid19/\n",
" - Mississippi State Department of Health: https://msdh.ms.gov/msdhsite/_static/14,0,420.html\n",
" - Nebraska Department of Health and Human Services: https://experience.arcgis.com/experience/ece0db09da4d4ca68252c3967aa1e9dd\n",
" - South Carolina Department of Health and Environmental Control: https://scdhec.gov/infectious-diseases/viruses/coronavirus-disease-2019-covid-19/sc-testing-data-projections-covid-19\n",
" - Nevada Department of Health and Human Services: https://nvhealthresponse.nv.gov/\n",
" - New Jersey Department of Health: https://covid19.nj.gov/\n",
" - Delaware Emergency Management Agency: https://coronavirus.delaware.gov/\n",
" - Utah Department of Health: https://coronavirus-dashboard.utah.gov/#overview\n",
" - Arizona Emergency Support Function (ESF)/Recovery Support Function (RSF) Operations Dashboard: https://www.arcgis.com/apps/MapSeries/index.html?appid=62e6bfa682a34e6aae9d9255ac865467\n",
" - Departamento de Salud, Puerto Rico: https://bioseguridad.maps.arcgis.com/apps/opsdashboard/index.html#/d7308c1abb4747e584329adf1215125e\n",
" - Arkansas Department of Health: https://experience.arcgis.com/experience/c2ef4a4fcbe5458fbf2e48a21e4fece9\n",
" - Maine Department of Health and Human Services: https://www.maine.gov/dhhs/mecdc/infectious-disease/epi/airborne/coronavirus/data.shtml\n",
" - Pennsylvania Department of Health: https://www.health.pa.gov/topics/disease/coronavirus/Pages/Cases.aspx\n",
" - City of Philadelphia: https://www.phila.gov/programs/coronavirus-disease-2019-covid-19/\n",
" - Lancaster County: https://covid-19-lancastercountypa.hub.arcgis.com/\n",
" - Chester County: https://chesco.maps.arcgis.com/apps/opsdashboard/index.html#/975082d579454c3ca7877db0a44e61ca\n",
" - Louisiana Department of Health: http://ldh.la.gov/coronavirus/\n",
" - Government of The District of Columbia: https://coronavirus.dc.gov/page/coronavirus-data \n",
" - North Dakota Department of Health: https://www.health.nd.gov/diseases-conditions/coronavirus/north-dakota-coronavirus-cases\n",
" - Oklahoma State Department of Health: https://looker-dashboards.ok.gov/embed/dashboards/44\n",
" - Guam Department of Public Health and Social Services: http://dphss.guam.gov/covid-19/ \n",
" - New Mexico Department of Health: https://cvprovider.nmhealth.org/public-dashboard.html\n",
" - Kentucky Department of Public Health: https://kygeonet.maps.arcgis.com/apps/opsdashboard/index.html#/543ac64bc40445918cf8bc34dc40e334\n",
" - Georgia Department of Public Health: https://dph.georgia.gov/covid-19-daily-status-report\n",
" - State of Hawai'i Department of Health: https://health.hawaii.gov/coronavirusdisease2019/what-you-should-know/current-situation-in-hawaii/\n",
" - Reno County Health Department: http://reno.maps.arcgis.com/apps/opsdashboard/index.html#/dfaef27aede1414b89abf393b2ccb994\n",
" - Texas Department of State Health Services: https://dshs.texas.gov/coronavirus/\n",
" - Texas: City of San Antonio: https://covid19.sanantonio.gov/Home\n",
" - Texas: Brazioria County: https://www.brazoriacountytx.gov/departments/health-department/brazoria-county-coronavirus-map\n",
" - Texas: Brazos County Health District: http://www.brazoshealth.org\n",
" - Texas: Cameron County Public Health: https://www.cameroncounty.us/publichealth/index.php/coronavirus/\n",
" - Texas: Collin County: https://www.collincountytx.gov/healthcare_services/Pages/news.aspx\n",
" - Texas: Dallas County: https://www.dallascounty.org/departments/dchhs/2019-novel-coronavirus.php\n",
" - Texas: Denton County: https://gis-covid19-dentoncounty.hub.arcgis.com/pages/covid-19cases\n",
" - Texas: Ector County: http://www.co.ector.tx.us/page/ector.CoronavirusCOVID19\n",
" - Texas: City of El Paso: http://epstrong.org/results.php\n",
" - Texas: Fayette County: https://www.co.fayette.tx.us/\n",
" - Texas: Fort Bend County Health & Human Services: https://www.fbchealth.org/ncov/\n",
" - Texas: Galveston County Health District: https://www.gchd.org/about-us/news-and-events/coronavirus-disease-2019-covid-19/galveston-county-confirmed-covid-19-cases\n",
" - Texas: Harris County: https://publichealth.harriscountytx.gov/Resources/2019-Novel-Coronavirus\n",
" - Texas: Hays County: https://hayscountytx.com/covid-19-information-for-hays-county-residents/\n",
" - Texas: Hidalgo County Health and Human Services: https://www.hidalgocounty.us/2630/Coronavirus-Updates\n",
" - Texas: Midland County: https://www.midlandtexas.gov/955/Coronavirus-COVID-19\n",
" - Texas: Montgomery County: https://coronavirus-response-moco.hub.arcgis.com/\n",
" - Texas: City of Corpus Christi: https://www.cctexas.com/coronavirus\n",
" - Texas: Amarillo Public Health Department: https://covid-data-amarillo.hub.arcgis.com/\n",
" - Texas: Tarrant County Public Health: https://www.tarrantcounty.com/en/public-health/disease-control---prevention/coronaviruas.html\n",
" - Texas: City of Mount Pleasant: https://www.mpcity.net/632/COVID-19-UPDATES\n",
" - Texas: City of San Angelo: https://www.cosatx.us/departments-services/health-services/coronavirus-covid-19#ad-image-0\n",
" - Texas: San Angelo Standard-Times: https://www.gosanangelo.com/\n",
" - Texas: Travis County: https://www.traviscountytx.gov/news/2020/1945-novel-coronavirus-covid-19-information\n",
" - Texas: City of Laredo: https://www.cityoflaredo.com/coronavirus/\n",
" - Texas: Williamson County & Cities Health District: http://www.wcchd.org/COVID-19/dashboard.php\n",
" - California Department of Publich Health: https://www.cdph.ca.gov/covid19\n",
" - California: Mariposa County: https://www.mariposacounty.org/1592/COVID-19-Information\n",
" - California: Alameda County Public Health Department: https://covid-19.acgov.org/\n",
" - California: Fresno County Public Health Department: https://www.co.fresno.ca.us/departments/public-health/covid-19\n",
" - California: Humboldt County: https://humboldtgov.org/\n",
" - California: Madera County: https://www.maderacounty.com/government/public-health/corona-virus-covid-19/covid-revised\n",
" - California: Marin County Health & Human Services: https://coronavirus.marinhhs.org/\n",
" - California: Orange County Health Care Agency: https://occovid19.ochealthinfo.com/coronavirus-in-oc\n",
" - California: Placer County: https://www.placer.ca.gov/coronavirus\n",
" - California: Riverside County: https://www.rivcoph.org/coronavirus\n",
" - California: Sacramento County: https://www.saccounty.net/COVID-19/\n",
" - California: San Francisco Department of Public Helath: https://www.sfdph.org/dph/alerts/coronavirus.asp\n",
" - California: San Benito County Health & Human Services: https://hhsa.cosb.us/publichealth/communicable-disease/coronavirus/\n",
" - California: San Joaquin County Public Health Services: http://www.sjcphs.org/coronavirus.aspx\n",
" - California: San Mateo County: https://www.smchealth.org/coronavirus\n",
" - California: Santa Cruz County Health Services Agency: http://www.santacruzhealth.org/HSAHome/HSADivisions/PublicHealth/CommunicableDiseaseControl/CoronavirusHome.aspx\n",
" - California: Shasta County: https://www.co.shasta.ca.us/covid-19/overview\n",
" - California: Solano County: https://www.co.shasta.ca.us/covid-19/overview\n",
" - California: Sonoma County: https://socoemergency.org/emergency/novel-coronavirus/coronavirus-cases/\n",
" - California: Stanislaus County Health Services Agency: http://schsa.org/publichealth/pages/corona-virus/\n",
" - California: Ventura County: https://www.venturacountyrecovers.org/\n",
" - California: Yolo County: https://www.yolocounty.org/health-human-services/adults/communicable-disease-investigation-and-control/novel-coronavirus-2019/\n",
" - California: Los Angeles County: http://publichealth.lacounty.gov/media/coronavirus/\n",
" - California: San Diego County: https://www.sandiegocounty.gov/coronavirus.html\n",
" - California: Santa Clara County: https://www.sccgov.org/sites/covid19/\n",
" - California: Imperial County Public Health Department: http://www.icphd.org/health-information-and-resources/healthy-facts/covid-19/\n",
" - California: San Bernardino County: https://sbcovid19.com/\n",
" - Montana Department of Public Health and Human Services: https://dphhs.mt.gov/publichealth/cdepi/diseases/coronavirusmt\n",
" - South Dakota Department of Health: https://doh.sd.gov/news/coronavirus.aspx\n",
" - Wyoming Department of Health: https://health.wyo.gov/publichealth/infectious-disease-epidemiology-unit/disease/novel-coronavirus/\n",
" - New Hampshire Department of Health and Human Services: https://www.nh.gov/covid19/dashboard/summary.htm\n",
" - Idaho Government: https://coronavirus.idaho.gov/\n",
" - Virgin Islands Department of Health: https://www.covid19usvi.com/\n",
" - Vermont Department of Health: https://www.healthvermont.gov/response/coronavirus-covid-19/current-activity-vermont\n",
" - Kansas: Reno County Health Department: https://experience.arcgis.com/experience/9a7d44773e4c4a48b3e09e4d8673961b/page/page_18/\n",
" - Kansas: Kansas Department Of Health And Environment: https://www.coronavirus.kdheks.gov/160/COVID-19-in-Kansas\n",
" \n",
" \n",
" \n",
"Counties GeoJSON with FIPS: Plotly https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json\n",
"\n",
"\n",
"Population Data: US Census https://www.census.gov/data/tables/time-series/demo/popest/2010s-counties-total.html#par_textimage\n",
"\n",
"\n",
"News Articles:\n",
"\n",
"\n",
"- https://www.cdc.gov/media/releases/2020/p0121-novel-coronavirus-travel-case.html\n",
"- https://www.ajmc.com/view/what-were-reading-global-health-emergency-declared-jj-pay-in-pelvic-mesh-suit-ban-on-fentanyl-lookalikes\n",
"- https://www.jurist.org/news/2020/02/trump-administration-declares-coronavirus-a-public-health-emergency-imposes-quarantine/\n",
"- https://www.cdc.gov/media/releases/2020/t0225-cdc-telebriefing-covid-19.html\n",
"- https://www.nytimes.com/2020/12/11/us/biogen-conference-covid-spread.html\n",
"- https://abc7news.com/coronavirus-princess-cruise-san-francisco-grand-placer-county-death/5988195/\n",
"- https://www.latimes.com/world-nation/story/2020-03-29/coronavirus-choir-outbreak\n",
"- https://apnews.com/article/52e12ca90c55b6e0c398d134a2cc286e\n",
"- https://travel.state.gov/content/travel/en/News/visas-news/presidential-proclamation-coronavirus.html\n",
"- https://www.gov.ca.gov/2020/03/19/governor-gavin-newsom-issues-stay-at-home-order/\n",
"- https://www.imperial.ac.uk/media/imperial-college/medicine/sph/ide/gida-fellowships/Imperial-College-COVID19-Exiting-Social-Distancing-24-03-2020.pdf\n",
"- https://www.aha.org/advisory/2020-03-25-senate-white-house-reach-agreement-relief-package-responding-covid-19\n",
"- https://www.whitehouse.gov/openingamerica/\n",
"- https://news.gallup.com/poll/309224/avoid-care-likely-covid-due-cost.aspx\n",
"- https://www.fda.gov/media/137564/download\n",
"- https://www.cnn.com/politics/live-news/fauci-testifies-coronavirus-05-12-2020/index.html\n",
"- https://www.cdc.gov/media/releases/2020/s0528-coronavirus-death-toll.html\n",
"- https://www.npr.org/sections/coronavirus-live-updates/2020/06/10/873473805/u-s-hits-2-million-coronavirus-cases-as-many-states-see-a-surge-of-patients?utm_campaign\n",
"- https://www.statnews.com/2020/06/30/u-s-could-see-100000-new-covid-19-cases-per-day-fauci-says/\n",
"- https://www.reuters.com/article/us-health-coronavirus-usa/reopenings-stall-as-u-s-records-nearly-50000-cases-of-covid-19-in-single-day-idUSKBN2426LN\n",
"- https://apnews.com/article/9dc4077f95d183649ca24a32a18abf01\n",
"- https://www.hhs.gov/sites/default/files/covid-19-faqs-hospitals-hospital-laboratory-acute-care-facility-data-reporting.pdf\n",
"- https://www.fda.gov/news-events/press-announcements/coronavirus-covid-19-update-daily-roundup-july-27-2020\n",
"- https://www.ajmc.com/view/a-timeline-of-covid19-developments-in-2020\n",
"- https://www.nytimes.com/2020/08/25/health/covid-19-testing-cdc.html\n",
"- https://www.washingtonpost.com/health/2020/10/17/sturgis-rally-spread/\n",
"- https://news.yahoo.com/exclusive-the-white-house-orders-end-to-covid-19-airport-screenings-for-international-travelers-172713942.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuYWptYy5jb20v&guce_referrer_sig=AQAAAFvRIi0-Frsg29RIAPMT5Cri0JngJQ5vy_sVm95rmTAKyfzQW8_riuVi_lANsEEbfBlRfjUZsyHq5VnBHspiQJ4nYrh67IspeWGxx5MRGBuGVms6pjhoxyIi84xxoTNZstl22EHn7rne93lJmMEjhXwDBphgDK5ApLYcTV7Hqkvf\n",
"- https://www.reuters.com/article/us-health-coronavirus-usa-cases-idUSKCN26G053?\n",
"- https://www.newsweek.com/amy-coney-barrett-rose-garden-event-was-wh-covid-superspreader-new-data-suggests-1537865\n",
"- https://www.npr.org/sections/latest-updates-trump-covid-19-results\n",
"- https://www.nejm.org/doi/full/10.1056/NEJMe2029812\n",
"- https://nypost.com/2020/11/11/this-couples-wedding-turned-into-a-covid-19-superspreader-event/\n",
"- https://www.nytimes.com/live/2020/11/04/world/covid-19-coronavirus-updates?\n",
"- https://www.politico.com/news/2020/11/19/cdc-thanksgiving-travel-coronavirus-438283?\n",
"- https://www.cnn.com/world/live-news/coronavirus-pandemic-12-02-20-intl/h_2cbfc56673b02f95ce59962dbf8888a0\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
numpy
ipywidgets
nbinteract
pandas
ipyleaflet
branca
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment