Created
March 18, 2020 19:39
-
-
Save hadim/bc5451dc064af75667f1c803946621b8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "\n", | |
| " <div class=\"bk-root\">\n", | |
| " <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n", | |
| " <span id=\"1001\">Loading BokehJS ...</span>\n", | |
| " </div>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "\n", | |
| "(function(root) {\n", | |
| " function now() {\n", | |
| " return new Date();\n", | |
| " }\n", | |
| "\n", | |
| " var force = true;\n", | |
| "\n", | |
| " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", | |
| " root._bokeh_onload_callbacks = [];\n", | |
| " root._bokeh_is_loading = undefined;\n", | |
| " }\n", | |
| "\n", | |
| " var JS_MIME_TYPE = 'application/javascript';\n", | |
| " var HTML_MIME_TYPE = 'text/html';\n", | |
| " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", | |
| " var CLASS_NAME = 'output_bokeh rendered_html';\n", | |
| "\n", | |
| " /**\n", | |
| " * Render data to the DOM node\n", | |
| " */\n", | |
| " function render(props, node) {\n", | |
| " var script = document.createElement(\"script\");\n", | |
| " node.appendChild(script);\n", | |
| " }\n", | |
| "\n", | |
| " /**\n", | |
| " * Handle when an output is cleared or removed\n", | |
| " */\n", | |
| " function handleClearOutput(event, handle) {\n", | |
| " var cell = handle.cell;\n", | |
| "\n", | |
| " var id = cell.output_area._bokeh_element_id;\n", | |
| " var server_id = cell.output_area._bokeh_server_id;\n", | |
| " // Clean up Bokeh references\n", | |
| " if (id != null && id in Bokeh.index) {\n", | |
| " Bokeh.index[id].model.document.clear();\n", | |
| " delete Bokeh.index[id];\n", | |
| " }\n", | |
| "\n", | |
| " if (server_id !== undefined) {\n", | |
| " // Clean up Bokeh references\n", | |
| " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", | |
| " cell.notebook.kernel.execute(cmd, {\n", | |
| " iopub: {\n", | |
| " output: function(msg) {\n", | |
| " var id = msg.content.text.trim();\n", | |
| " if (id in Bokeh.index) {\n", | |
| " Bokeh.index[id].model.document.clear();\n", | |
| " delete Bokeh.index[id];\n", | |
| " }\n", | |
| " }\n", | |
| " }\n", | |
| " });\n", | |
| " // Destroy server and session\n", | |
| " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", | |
| " cell.notebook.kernel.execute(cmd);\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| " /**\n", | |
| " * Handle when a new output is added\n", | |
| " */\n", | |
| " function handleAddOutput(event, handle) {\n", | |
| " var output_area = handle.output_area;\n", | |
| " var output = handle.output;\n", | |
| "\n", | |
| " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", | |
| " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", | |
| " return\n", | |
| " }\n", | |
| "\n", | |
| " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", | |
| "\n", | |
| " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", | |
| " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", | |
| " // store reference to embed id on output_area\n", | |
| " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", | |
| " }\n", | |
| " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", | |
| " var bk_div = document.createElement(\"div\");\n", | |
| " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", | |
| " var script_attrs = bk_div.children[0].attributes;\n", | |
| " for (var i = 0; i < script_attrs.length; i++) {\n", | |
| " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", | |
| " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", | |
| " }\n", | |
| " // store reference to server id on output_area\n", | |
| " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| " function register_renderer(events, OutputArea) {\n", | |
| "\n", | |
| " function append_mime(data, metadata, element) {\n", | |
| " // create a DOM node to render to\n", | |
| " var toinsert = this.create_output_subarea(\n", | |
| " metadata,\n", | |
| " CLASS_NAME,\n", | |
| " EXEC_MIME_TYPE\n", | |
| " );\n", | |
| " this.keyboard_manager.register_events(toinsert);\n", | |
| " // Render to node\n", | |
| " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", | |
| " render(props, toinsert[toinsert.length - 1]);\n", | |
| " element.append(toinsert);\n", | |
| " return toinsert\n", | |
| " }\n", | |
| "\n", | |
| " /* Handle when an output is cleared or removed */\n", | |
| " events.on('clear_output.CodeCell', handleClearOutput);\n", | |
| " events.on('delete.Cell', handleClearOutput);\n", | |
| "\n", | |
| " /* Handle when a new output is added */\n", | |
| " events.on('output_added.OutputArea', handleAddOutput);\n", | |
| "\n", | |
| " /**\n", | |
| " * Register the mime type and append_mime function with output_area\n", | |
| " */\n", | |
| " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", | |
| " /* Is output safe? */\n", | |
| " safe: true,\n", | |
| " /* Index of renderer in `output_area.display_order` */\n", | |
| " index: 0\n", | |
| " });\n", | |
| " }\n", | |
| "\n", | |
| " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", | |
| " if (root.Jupyter !== undefined) {\n", | |
| " var events = require('base/js/events');\n", | |
| " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", | |
| "\n", | |
| " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", | |
| " register_renderer(events, OutputArea);\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| " \n", | |
| " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", | |
| " root._bokeh_timeout = Date.now() + 5000;\n", | |
| " root._bokeh_failed_load = false;\n", | |
| " }\n", | |
| "\n", | |
| " var NB_LOAD_WARNING = {'data': {'text/html':\n", | |
| " \"<div style='background-color: #fdd'>\\n\"+\n", | |
| " \"<p>\\n\"+\n", | |
| " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", | |
| " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", | |
| " \"</p>\\n\"+\n", | |
| " \"<ul>\\n\"+\n", | |
| " \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n", | |
| " \"<li>use INLINE resources instead, as so:</li>\\n\"+\n", | |
| " \"</ul>\\n\"+\n", | |
| " \"<code>\\n\"+\n", | |
| " \"from bokeh.resources import INLINE\\n\"+\n", | |
| " \"output_notebook(resources=INLINE)\\n\"+\n", | |
| " \"</code>\\n\"+\n", | |
| " \"</div>\"}};\n", | |
| "\n", | |
| " function display_loaded() {\n", | |
| " var el = document.getElementById(\"1001\");\n", | |
| " if (el != null) {\n", | |
| " el.textContent = \"BokehJS is loading...\";\n", | |
| " }\n", | |
| " if (root.Bokeh !== undefined) {\n", | |
| " if (el != null) {\n", | |
| " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", | |
| " }\n", | |
| " } else if (Date.now() < root._bokeh_timeout) {\n", | |
| " setTimeout(display_loaded, 100)\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| "\n", | |
| " function run_callbacks() {\n", | |
| " try {\n", | |
| " root._bokeh_onload_callbacks.forEach(function(callback) {\n", | |
| " if (callback != null)\n", | |
| " callback();\n", | |
| " });\n", | |
| " } finally {\n", | |
| " delete root._bokeh_onload_callbacks\n", | |
| " }\n", | |
| " console.debug(\"Bokeh: all callbacks have finished\");\n", | |
| " }\n", | |
| "\n", | |
| " function load_libs(css_urls, js_urls, callback) {\n", | |
| " if (css_urls == null) css_urls = [];\n", | |
| " if (js_urls == null) js_urls = [];\n", | |
| "\n", | |
| " root._bokeh_onload_callbacks.push(callback);\n", | |
| " if (root._bokeh_is_loading > 0) {\n", | |
| " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", | |
| " return null;\n", | |
| " }\n", | |
| " if (js_urls == null || js_urls.length === 0) {\n", | |
| " run_callbacks();\n", | |
| " return null;\n", | |
| " }\n", | |
| " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", | |
| " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", | |
| "\n", | |
| " function on_load() {\n", | |
| " root._bokeh_is_loading--;\n", | |
| " if (root._bokeh_is_loading === 0) {\n", | |
| " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", | |
| " run_callbacks()\n", | |
| " }\n", | |
| " }\n", | |
| "\n", | |
| " function on_error() {\n", | |
| " console.error(\"failed to load \" + url);\n", | |
| " }\n", | |
| "\n", | |
| " for (var i = 0; i < css_urls.length; i++) {\n", | |
| " var url = css_urls[i];\n", | |
| " const element = document.createElement(\"link\");\n", | |
| " element.onload = on_load;\n", | |
| " element.onerror = on_error;\n", | |
| " element.rel = \"stylesheet\";\n", | |
| " element.type = \"text/css\";\n", | |
| " element.href = url;\n", | |
| " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", | |
| " document.body.appendChild(element);\n", | |
| " }\n", | |
| "\n", | |
| " for (var i = 0; i < js_urls.length; i++) {\n", | |
| " var url = js_urls[i];\n", | |
| " var element = document.createElement('script');\n", | |
| " element.onload = on_load;\n", | |
| " element.onerror = on_error;\n", | |
| " element.async = false;\n", | |
| " element.src = url;\n", | |
| " \n", | |
| " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", | |
| " document.head.appendChild(element);\n", | |
| " }\n", | |
| " };var element = document.getElementById(\"1001\");\n", | |
| " if (element == null) {\n", | |
| " console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n", | |
| " return false;\n", | |
| " }\n", | |
| "\n", | |
| " function inject_raw_css(css) {\n", | |
| " const element = document.createElement(\"style\");\n", | |
| " element.appendChild(document.createTextNode(css));\n", | |
| " document.body.appendChild(element);\n", | |
| " }\n", | |
| "\n", | |
| " \n", | |
| " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.0.min.js\"];\n", | |
| " var css_urls = [];\n", | |
| " \n", | |
| "\n", | |
| " var inline_js = [\n", | |
| " function(Bokeh) {\n", | |
| " Bokeh.set_log_level(\"info\");\n", | |
| " },\n", | |
| " function(Bokeh) {\n", | |
| " \n", | |
| " \n", | |
| " }\n", | |
| " ];\n", | |
| "\n", | |
| " function run_inline_js() {\n", | |
| " \n", | |
| " if (root.Bokeh !== undefined || force === true) {\n", | |
| " \n", | |
| " for (var i = 0; i < inline_js.length; i++) {\n", | |
| " inline_js[i].call(root, root.Bokeh);\n", | |
| " }\n", | |
| " if (force === true) {\n", | |
| " display_loaded();\n", | |
| " }} else if (Date.now() < root._bokeh_timeout) {\n", | |
| " setTimeout(run_inline_js, 100);\n", | |
| " } else if (!root._bokeh_failed_load) {\n", | |
| " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", | |
| " root._bokeh_failed_load = true;\n", | |
| " } else if (force !== true) {\n", | |
| " var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n", | |
| " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", | |
| " }\n", | |
| "\n", | |
| " }\n", | |
| "\n", | |
| " if (root._bokeh_is_loading === 0) {\n", | |
| " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", | |
| " run_inline_js();\n", | |
| " } else {\n", | |
| " load_libs(css_urls, js_urls, function() {\n", | |
| " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", | |
| " run_inline_js();\n", | |
| " });\n", | |
| " }\n", | |
| "}(window));" | |
| ], | |
| "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1001\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n \n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };var element = document.getElementById(\"1001\");\n if (element == null) {\n console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n return false;\n }\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.0.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "%load_ext autoreload\n", | |
| "%autoreload 2\n", | |
| "\n", | |
| "import pathlib\n", | |
| "import datetime\n", | |
| "import itertools\n", | |
| "\n", | |
| "import bokeh\n", | |
| "from bokeh import io\n", | |
| "from bokeh import models\n", | |
| "from bokeh import plotting\n", | |
| "from bokeh import palettes\n", | |
| "bokeh.io.output_notebook()\n", | |
| "\n", | |
| "from tqdm.auto import tqdm\n", | |
| "import numpy as np\n", | |
| "import pandas as pd\n", | |
| "\n", | |
| "data_dir = pathlib.Path(\"../data\")\n", | |
| "base_url = \"https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/{date_str}.csv\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "application/vnd.jupyter.widget-view+json": { | |
| "model_id": "a133bef38277438098ec7753a0113e17", | |
| "version_major": 2, | |
| "version_minor": 0 | |
| }, | |
| "text/plain": [ | |
| "HBox(children=(FloatProgress(value=0.0, max=33.0), HTML(value='')))" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "2020-03-18 00:00:00 not available\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Scrap data\n", | |
| "start_date = datetime.datetime(2020, 2, 15)\n", | |
| "end_date = datetime.datetime.now()\n", | |
| "\n", | |
| "data = pd.DataFrame()\n", | |
| "all_dates = pd.date_range(start_date, end_date, freq=\"D\")\n", | |
| "\n", | |
| "for date in tqdm(all_dates, total=len(all_dates)):\n", | |
| " date_str = date.strftime(\"%m-%d-%Y\")\n", | |
| " url = base_url.format(date_str=date_str)\n", | |
| " \n", | |
| " try:\n", | |
| " df = pd.read_csv(url)\n", | |
| " df[\"date\"] = date\n", | |
| " data = data.append(df)\n", | |
| " except Exception:\n", | |
| " print(f\"{date} not available\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array(['Mainland China', 'Others', 'Singapore', 'Hong Kong', 'Japan',\n", | |
| " 'Thailand', 'South Korea', 'Malaysia', 'Taiwan', 'Germany',\n", | |
| " 'Vietnam', 'France', 'Macau', 'UK', 'United Arab Emirates',\n", | |
| " 'Australia', 'Canada', 'India', 'Italy', 'Philippines', 'Russia',\n", | |
| " 'Spain', 'US', 'Belgium', 'Cambodia', 'Egypt', 'Finland', 'Nepal',\n", | |
| " 'Sri Lanka', 'Sweden', 'Iran', 'Israel', 'Lebanon', 'Iraq', 'Oman',\n", | |
| " 'Afghanistan', 'Bahrain', 'Kuwait', 'Austria', 'Algeria',\n", | |
| " 'Croatia', 'Switzerland', 'Pakistan', 'Brazil', 'Georgia',\n", | |
| " 'Greece', 'North Macedonia', 'Norway', 'Romania', 'Denmark',\n", | |
| " 'Estonia', 'Netherlands', 'San Marino', ' Azerbaijan', 'Belarus',\n", | |
| " 'Iceland', 'Lithuania', 'Mexico', 'New Zealand', 'Nigeria',\n", | |
| " 'North Ireland', 'Ireland', 'Luxembourg', 'Monaco', 'Qatar',\n", | |
| " 'Ecuador', 'Azerbaijan', 'Czech Republic', 'Armenia',\n", | |
| " 'Dominican Republic', 'Indonesia', 'Portugal', 'Andorra', 'Latvia',\n", | |
| " 'Morocco', 'Saudi Arabia', 'Senegal', 'Argentina', 'Chile',\n", | |
| " 'Jordan', 'Ukraine', 'Saint Barthelemy', 'Hungary',\n", | |
| " 'Faroe Islands', 'Gibraltar', 'Liechtenstein', 'Poland', 'Tunisia',\n", | |
| " 'Palestine', 'Bosnia and Herzegovina', 'Slovenia', 'South Africa',\n", | |
| " 'Bhutan', 'Cameroon', 'Colombia', 'Costa Rica', 'Peru', 'Serbia',\n", | |
| " 'Slovakia', 'Togo', 'Vatican City', 'French Guiana', 'Malta',\n", | |
| " 'Martinique', 'Republic of Ireland', 'Bulgaria', 'Maldives',\n", | |
| " 'Bangladesh', 'Moldova', 'Paraguay', 'Albania', 'Cyprus',\n", | |
| " 'St. Martin', 'Brunei', 'Iran (Islamic Republic of)',\n", | |
| " 'Republic of Korea', 'Hong Kong SAR', 'Taipei and environs',\n", | |
| " 'Viet Nam', 'occupied Palestinian territory', 'Macao SAR',\n", | |
| " 'Russian Federation', 'Republic of Moldova', 'Saint Martin',\n", | |
| " 'Burkina Faso', 'Channel Islands', 'Holy See', 'Mongolia',\n", | |
| " 'Panama', 'China', 'Korea, South', 'Cruise Ship', 'United Kingdom',\n", | |
| " 'Czechia', 'Taiwan*', 'Bolivia', 'Honduras', 'Congo (Kinshasa)',\n", | |
| " \"Cote d'Ivoire\", 'Jamaica', 'Reunion', 'Turkey', 'Cuba', 'Guyana',\n", | |
| " 'Kazakhstan', 'Cayman Islands', 'Guadeloupe', 'Ethiopia', 'Sudan',\n", | |
| " 'Guinea', 'Antigua and Barbuda', 'Aruba', 'Kenya', 'Uruguay',\n", | |
| " 'Ghana', 'Jersey', 'Namibia', 'Seychelles', 'Trinidad and Tobago',\n", | |
| " 'Venezuela', 'Curacao', 'Eswatini', 'Gabon', 'Guatemala',\n", | |
| " 'Guernsey', 'Mauritania', 'Rwanda', 'Saint Lucia',\n", | |
| " 'Saint Vincent and the Grenadines', 'Suriname', 'Kosovo',\n", | |
| " 'Central African Republic', 'Congo (Brazzaville)',\n", | |
| " 'Equatorial Guinea', 'Uzbekistan', 'Guam', 'Puerto Rico', 'Benin',\n", | |
| " 'Greenland', 'Liberia', 'Mayotte', 'Republic of the Congo',\n", | |
| " 'Somalia', 'Tanzania', 'The Bahamas', 'Barbados', 'Montenegro',\n", | |
| " 'The Gambia'], dtype=object)" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Print all countries\n", | |
| "data[\"Country/Region\"].unique()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| "\n", | |
| " <div class=\"bk-root\" id=\"b2bc7516-4bea-4138-8c79-1cfbd7edeebc\" data-root-id=\"1002\"></div>\n" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "application/javascript": [ | |
| "(function(root) {\n", | |
| " function embed_document(root) {\n", | |
| " \n", | |
| " var docs_json = {\"1d1b8bce-2976-4969-a10d-fdb3b3282e54\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1011\"}],\"center\":[{\"id\":\"1014\"},{\"id\":\"1018\"},{\"id\":\"1058\"}],\"left\":[{\"id\":\"1015\"}],\"renderers\":[{\"id\":\"1037\"},{\"id\":\"1064\"},{\"id\":\"1092\"},{\"id\":\"1122\"},{\"id\":\"1154\"},{\"id\":\"1188\"},{\"id\":\"1224\"},{\"id\":\"1262\"},{\"id\":\"1302\"},{\"id\":\"1344\"}],\"sizing_mode\":\"stretch_width\",\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1025\"},\"x_range\":{\"id\":\"1003\"},\"x_scale\":{\"id\":\"1007\"},\"y_range\":{\"id\":\"1005\"},\"y_scale\":{\"id\":\"1009\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1057\",\"type\":\"YearsTicker\"},{\"attributes\":{},\"id\":\"1134\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1169\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1324\",\"type\":\"Selection\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1062\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1325\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"1150\"}},\"id\":\"1155\",\"type\":\"CDSView\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1019\"},{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1383\"}]},\"id\":\"1025\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"Confirmed\":[12,12,12,12,12,12,12,12,12,12,14,18,38,57,100,130,191,204,285,377,653,949,1126,1209,1784,2284,2284,3667,4480,4513,6650,7683],\"Deaths\":[1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,4,4,6,9,11,19,19,33,48,48,79,91,91,148,148],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAACAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAACAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAACAR0Cw4emVsoxUQLDh6ZWyjFRA2ht8YTIhUEDaG3xhMiFRQGRd3EYD0EtAXkvIBz37UUB2vp8aL2VJQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEBmiGNd3OpewGaIY13c6l7ArOHplbK8OUBOHhZqTUM7wCv2l92TkHHA001iEFhodcBbIEHxY/RxwA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[4,4,4,4,4,4,4,4,4,4,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1102\"},\"selection_policy\":{\"id\":\"1103\"}},\"id\":\"1060\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#d62728\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1261\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"1220\"}},\"id\":\"1225\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1168\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1060\"},\"glyph\":{\"id\":\"1062\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1063\"},\"selection_glyph\":null,\"view\":{\"id\":\"1065\"}},\"id\":\"1064\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1102\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"Confirmed\":[2,2,2,2,2,2,2,2,2,2,6,13,15,32,45,84,120,165,222,259,400,500,673,1073,1695,2277,2277,5232,6391,7798,9942,11748],\"Deaths\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,5,10,17,28,35,54,55,133,195,289,342,533],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERA3pOHhVo7REDek4eFWjtEQN6Th4VaO0RA3pOHhVo7REDek4eFWjtEQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAPE7RkVz+DcA8TtGRXP4NwDxO0ZFc/g3APE7RkVz+DcA8TtGRXP4NwA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,30,30,32,32,183,183,193,517,517,530,1028],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1168\"},\"selection_policy\":{\"id\":\"1169\"}},\"id\":\"1118\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"Confirmed\":[7,7,8,8,8,8,9,9,9,10,11,11,13,14,20,24,27,30,33,37,49,54,64,76,79,108,117,193,196,250,415,478],\"Deaths\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,4,5],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7FG4HoWtZkDsUbgeha1mQOxRuB6FrWZA7FG4HoWtZkDsUbgeha1mQB8Wak3zDm1Al5APejbgcUCXkA96NuBxQAyTqYJRe2pADJOpglF7akBiEFg5tCZwQGIQWDm0JnBA+AZfmEwseUD5oGez6tF2QMZLN4lBDH1A3NeBc8YYgUDc14FzxhiBQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dJNYhBVdsDx0k1iEFV2wPHSTWIQVXbA8dJNYhBVdsDx0k1iEFV2wEMc6+I2dn3AQKTfvg5HgsBApN++DkeCwFr1udqKMXnAWvW52ooxecC2FfvL7lh9wLYV+8vuWH3Am+Ydp+jriMC06nO1lRaFwLaEfNAz34jA6nO1FXuyjsDqc7UVe7KOwA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[1,1,1,1,1,1,3,3,3,3,3,3,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,9,9],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1204\"},\"selection_policy\":{\"id\":\"1205\"}},\"id\":\"1150\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"Confirmed\":[16,16,16,16,16,16,16,16,16,16,17,27,46,48,79,130,159,196,262,482,670,799,1040,1176,1457,1908,2078,3675,4585,5795,7272,9257],\"Deaths\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,3,3,7,9,11,17,24],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAPnlYqDWVSUA+eVioNZVJQD55WKg1lUlAPnlYqDWVSUA+eVioNZVJQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAukkMAivnJEC6SQwCK+ckQLpJDAIr5yRAukkMAivnJEC6SQwCK+ckQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[1,1,1,12,12,12,14,14,14,14,14,15,16,16,16,16,16,16,16,16,17,18,18,18,18,25,25,46,46,46,67,67],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1409\"},\"selection_policy\":{\"id\":\"1410\"}},\"id\":\"1340\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1033\"}},\"id\":\"1038\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1063\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"1340\"},\"glyph\":{\"id\":\"1342\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1343\"},\"selection_glyph\":null,\"view\":{\"id\":\"1345\"}},\"id\":\"1344\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"click_policy\":\"hide\",\"items\":[{\"id\":\"1059\"},{\"id\":\"1117\"},{\"id\":\"1183\"},{\"id\":\"1257\"},{\"id\":\"1339\"}],\"location\":\"top_left\"},\"id\":\"1058\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#d62728\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1223\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1103\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1220\"},\"glyph\":{\"id\":\"1222\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1223\"},\"selection_glyph\":null,\"view\":{\"id\":\"1225\"}},\"id\":\"1224\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"1060\"}},\"id\":\"1065\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#ff7f0e\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1091\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1340\"}},\"id\":\"1345\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"Confirmed\":[7,7,8,8,8,8,9,9,9,10,11,11,13,14,20,24,27,30,33,37,49,54,64,76,79,108,117,193,196,250,415,478],\"Deaths\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,4,5],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7FG4HoWtZkDsUbgeha1mQOxRuB6FrWZA7FG4HoWtZkDsUbgeha1mQB8Wak3zDm1Al5APejbgcUCXkA96NuBxQAyTqYJRe2pADJOpglF7akBiEFg5tCZwQGIQWDm0JnBA+AZfmEwseUD5oGez6tF2QMZLN4lBDH1A3NeBc8YYgUDc14FzxhiBQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dJNYhBVdsDx0k1iEFV2wPHSTWIQVXbA8dJNYhBVdsDx0k1iEFV2wEMc6+I2dn3AQKTfvg5HgsBApN++DkeCwFr1udqKMXnAWvW52ooxecC2FfvL7lh9wLYV+8vuWH3Am+Ydp+jriMC06nO1lRaFwLaEfNAz34jA6nO1FXuyjsDqc7UVe7KOwA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[1,1,1,1,1,1,3,3,3,3,3,3,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,9,9],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1242\"},\"selection_policy\":{\"id\":\"1243\"}},\"id\":\"1184\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1072\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1150\"},\"glyph\":{\"id\":\"1152\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1153\"},\"selection_glyph\":null,\"view\":{\"id\":\"1155\"}},\"id\":\"1154\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1204\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1243\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1184\"},\"glyph\":{\"id\":\"1186\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1187\"},\"selection_glyph\":null,\"view\":{\"id\":\"1189\"}},\"id\":\"1188\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"#9467bd\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1300\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#9467bd\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1343\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"France\"},\"renderers\":[{\"id\":\"1037\"},{\"id\":\"1064\"}]},\"id\":\"1059\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1073\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#2ca02c\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1187\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1369\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1368\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1184\"}},\"id\":\"1189\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"Confirmed\":[16,16,16,16,16,16,16,16,16,16,17,27,46,48,79,130,159,196,262,482,670,799,1040,1176,1457,1908,2078,3675,4585,5795,7272,9257],\"Deaths\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,3,3,7,9,11,17,24],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAAAAAAACASUAAAAAAAIBJQAAAAAAAgElAPnlYqDWVSUA+eVioNZVJQD55WKg1lUlAPnlYqDWVSUA+eVioNZVJQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACJAukkMAivnJEC6SQwCK+ckQLpJDAIr5yRAukkMAivnJEC6SQwCK+ckQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[1,1,1,12,12,12,14,14,14,14,14,15,16,16,16,16,16,16,16,16,17,18,18,18,18,25,25,46,46,46,67,67],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1368\"},\"selection_policy\":{\"id\":\"1369\"}},\"id\":\"1298\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null,\"formatters\":{\"@date\":\"datetime\"},\"tooltips\":[[\"Date\",\"@date{%F}\"],[\"Confirmed\",\"@Confirmed\"],[\"Deaths\",\"@Deaths\"]]},\"id\":\"1383\",\"type\":\"HoverTool\"},{\"attributes\":{\"line_color\":\"#ff7f0e\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1090\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1088\"}},\"id\":\"1093\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"#2ca02c\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1152\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{\"fill_color\":{\"value\":\"#2ca02c\"},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1186\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"Spain\"},\"renderers\":[{\"id\":\"1092\"},{\"id\":\"1122\"}]},\"id\":\"1117\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"1298\"},\"glyph\":{\"id\":\"1300\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1301\"},\"selection_glyph\":null,\"view\":{\"id\":\"1303\"}},\"id\":\"1302\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1409\",\"type\":\"Selection\"},{\"attributes\":{\"data_source\":{\"id\":\"1088\"},\"glyph\":{\"id\":\"1090\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1091\"},\"selection_glyph\":null,\"view\":{\"id\":\"1093\"}},\"id\":\"1092\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1205\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1118\"}},\"id\":\"1123\",\"type\":\"CDSView\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"DatetimeTickFormatter\"},{\"attributes\":{},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"value\":\"Italy\"},\"renderers\":[{\"id\":\"1224\"},{\"id\":\"1262\"}]},\"id\":\"1257\",\"type\":\"LegendItem\"},{\"attributes\":{\"data_source\":{\"id\":\"1033\"},\"glyph\":{\"id\":\"1035\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1036\"},\"selection_glyph\":null,\"view\":{\"id\":\"1038\"}},\"id\":\"1037\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1410\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1242\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1040\",\"type\":\"Title\"},{\"attributes\":{\"label\":{\"value\":\"Canada\"},\"renderers\":[{\"id\":\"1154\"},{\"id\":\"1188\"}]},\"id\":\"1183\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1042\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1282\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"Date\",\"formatter\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1012\"}},\"id\":\"1011\",\"type\":\"DatetimeAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1015\"},\"dimension\":1,\"ticker\":null},\"id\":\"1018\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#ff7f0e\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1121\",\"type\":\"Circle\"},{\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"id\":\"1046\"},{\"id\":\"1047\"},{\"id\":\"1048\"},{\"id\":\"1049\"},{\"id\":\"1050\"},{\"id\":\"1051\"},{\"id\":\"1052\"},{\"id\":\"1053\"},{\"id\":\"1054\"},{\"id\":\"1055\"},{\"id\":\"1056\"},{\"id\":\"1057\"}]},\"id\":\"1012\",\"type\":\"DatetimeTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1011\"},\"grid_line_color\":null,\"ticker\":null},\"id\":\"1014\",\"type\":\"Grid\"},{\"attributes\":{\"label\":{\"value\":\"Germany\"},\"renderers\":[{\"id\":\"1302\"},{\"id\":\"1344\"}]},\"id\":\"1339\",\"type\":\"LegendItem\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1045\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data_source\":{\"id\":\"1118\"},\"glyph\":{\"id\":\"1120\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1121\"},\"selection_glyph\":null,\"view\":{\"id\":\"1123\"}},\"id\":\"1122\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1016\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"1258\"}},\"id\":\"1263\",\"type\":\"CDSView\"},{\"attributes\":{\"formatter\":{\"id\":\"1042\"},\"ticker\":{\"id\":\"1016\"}},\"id\":\"1015\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"#ff7f0e\"},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1120\",\"type\":\"Circle\"},{\"attributes\":{\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"max_interval\":43200000.0,\"min_interval\":3600000.0,\"num_minor_ticks\":0},\"id\":\"1048\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"line_color\":\"#d62728\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1222\",\"type\":\"Line\"},{\"attributes\":{\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"max_interval\":1800000.0,\"min_interval\":1000.0,\"num_minor_ticks\":0},\"id\":\"1047\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#2ca02c\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1153\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"Confirmed\":[2,2,2,2,2,2,2,2,2,2,6,13,15,32,45,84,120,165,222,259,400,500,673,1073,1695,2277,2277,5232,6391,7798,9942,11748],\"Deaths\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,5,10,17,28,35,54,55,133,195,289,342,533],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERA3pOHhVo7REDek4eFWjtEQN6Th4VaO0RA3pOHhVo7REDek4eFWjtEQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAAAAAAAAAEMAAAAAAAAAQwAAAAAAAABDAPE7RkVz+DcA8TtGRXP4NwDxO0ZFc/g3APE7RkVz+DcA8TtGRXP4NwA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,30,30,32,32,183,183,193,517,517,530,1028],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1134\"},\"selection_policy\":{\"id\":\"1135\"}},\"id\":\"1088\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"id\":\"1049\",\"type\":\"DaysTicker\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#9467bd\",\"line_width\":2,\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1301\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"Confirmed\":[3,3,3,3,3,3,20,62,155,229,322,453,655,888,1128,1694,2036,2502,3089,3858,4636,5883,7375,9172,10149,12462,12462,17660,21157,24747,27980,31506],\"Deaths\":[0,0,0,0,0,0,1,2,3,7,10,12,17,21,29,34,52,79,107,148,197,233,366,463,631,827,827,1266,1441,1809,2158,2503],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVA8rBQa5rvREDysFBrmu9EQPKwUGua70RA8rBQa5rvREDysFBrmu9EQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChANIC3QIIiKUA0gLdAgiIpQDSAt0CCIilANIC3QIIiKUA0gLdAgiIpQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[0,0,0,0,0,0,0,1,2,1,1,3,45,46,46,83,149,160,276,414,523,589,622,724,724,1045,1045,1439,1966,2335,2749,2941],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1324\"},\"selection_policy\":{\"id\":\"1325\"}},\"id\":\"1258\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]},\"id\":\"1050\",\"type\":\"DaysTicker\"},{\"attributes\":{\"data_source\":{\"id\":\"1258\"},\"glyph\":{\"id\":\"1260\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1261\"},\"selection_glyph\":null,\"view\":{\"id\":\"1263\"}},\"id\":\"1262\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"Confirmed\":[3,3,3,3,3,3,20,62,155,229,322,453,655,888,1128,1694,2036,2502,3089,3858,4636,5883,7375,9172,10149,12462,12462,17660,21157,24747,27980,31506],\"Deaths\":[0,0,0,0,0,0,1,2,3,7,10,12,17,21,29,34,52,79,107,148,197,233,366,463,631,827,827,1266,1441,1809,2158,2503],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVAAAAAAACARUAAAAAAAIBFQAAAAAAAgEVA8rBQa5rvREDysFBrmu9EQPKwUGua70RA8rBQa5rvREDysFBrmu9EQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAoQAAAAAAAAChANIC3QIIiKUA0gLdAgiIpQDSAt0CCIilANIC3QIIiKUA0gLdAgiIpQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[0,0,0,0,0,0,0,1,2,1,1,3,45,46,46,83,149,160,276,414,523,589,622,724,724,1045,1045,1439,1966,2335,2749,2941],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1282\"},\"selection_policy\":{\"id\":\"1283\"}},\"id\":\"1220\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"days\":[1,8,15,22]},\"id\":\"1051\",\"type\":\"DaysTicker\"},{\"attributes\":{\"fill_color\":{\"value\":\"#d62728\"},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1260\",\"type\":\"Circle\"},{\"attributes\":{\"fill_color\":{\"value\":\"#9467bd\"},\"line_color\":{\"value\":null},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"date\"},\"y\":{\"field\":\"Confirmed\"}},\"id\":\"1342\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1019\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1135\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"days\":[1,15]},\"id\":\"1052\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]},\"id\":\"1053\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"1045\"}},\"id\":\"1021\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1283\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1003\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1298\"}},\"id\":\"1303\",\"type\":\"CDSView\"},{\"attributes\":{\"months\":[0,2,4,6,8,10]},\"id\":\"1054\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"SaveTool\"},{\"attributes\":{\"months\":[0,6]},\"id\":\"1056\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"months\":[0,4,8]},\"id\":\"1055\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"mantissas\":[1,2,5],\"max_interval\":500.0,\"num_minor_ticks\":0},\"id\":\"1046\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"data\":{\"Confirmed\":[12,12,12,12,12,12,12,12,12,12,14,18,38,57,100,130,191,204,285,377,653,949,1126,1209,1784,2284,2284,3667,4480,4513,6650,7683],\"Deaths\":[1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,4,4,6,9,11,19,19,33,48,48,79,91,91,148,148],\"Latitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAACAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAACAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAACAR0Cw4emVsoxUQLDh6ZWyjFRA2ht8YTIhUEDaG3xhMiFRQGRd3EYD0EtAXkvIBz37UUB2vp8aL2VJQA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Longitude\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEBmiGNd3OpewGaIY13c6l7ArOHplbK8OUBOHhZqTUM7wCv2l92TkHHA001iEFhodcBbIEHxY/RxwA==\",\"dtype\":\"float64\",\"shape\":[32]},\"Recovered\":[4,4,4,4,4,4,4,4,4,4,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12],\"date\":{\"__ndarray__\":\"AABAUWIEd0IAAAC3tAR3QgAAwBwHBXdCAACAglkFd0IAAEDoqwV3QgAAAE7+BXdCAADAs1AGd0IAAIAZowZ3QgAAQH/1BndCAAAA5UcHd0IAAMBKmgd3QgAAgLDsB3dCAABAFj8Id0IAAAB8kQh3QgAAwOHjCHdCAACARzYJd0IAAECtiAl3QgAAABPbCXdCAADAeC0Kd0IAAIDefwp3QgAAQETSCndCAAAAqiQLd0IAAMAPdwt3QgAAgHXJC3dCAABA2xsMd0IAAABBbgx3QgAAwKbADHdCAACADBMNd0IAAEByZQ13QgAAANi3DXdCAADAPQoOd0IAAICjXA53Qg==\",\"dtype\":\"float64\",\"shape\":[32]},\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"selected\":{\"id\":\"1072\"},\"selection_policy\":{\"id\":\"1073\"}},\"id\":\"1033\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.0\"}};\n", | |
| " var render_items = [{\"docid\":\"1d1b8bce-2976-4969-a10d-fdb3b3282e54\",\"root_ids\":[\"1002\"],\"roots\":{\"1002\":\"b2bc7516-4bea-4138-8c79-1cfbd7edeebc\"}}];\n", | |
| " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", | |
| "\n", | |
| " }\n", | |
| " if (root.Bokeh !== undefined) {\n", | |
| " embed_document(root);\n", | |
| " } else {\n", | |
| " var attempts = 0;\n", | |
| " var timer = setInterval(function(root) {\n", | |
| " if (root.Bokeh !== undefined) {\n", | |
| " clearInterval(timer);\n", | |
| " embed_document(root);\n", | |
| " } else {\n", | |
| " attempts++;\n", | |
| " if (attempts > 100) {\n", | |
| " clearInterval(timer);\n", | |
| " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", | |
| " }\n", | |
| " }\n", | |
| " }, 10, root)\n", | |
| " }\n", | |
| "})(window);" | |
| ], | |
| "application/vnd.bokehjs_exec.v0+json": "" | |
| }, | |
| "metadata": { | |
| "application/vnd.bokehjs_exec.v0+json": { | |
| "id": "1002" | |
| } | |
| }, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "countries = [\"France\", \"Spain\", \"Canada\", \"Italy\", \"Germany\"]\n", | |
| "\n", | |
| "fig = bokeh.plotting.figure(sizing_mode='stretch_width', x_axis_type='datetime')\n", | |
| "palette = palettes.all_palettes[\"Category10\"][10]\n", | |
| "colors = itertools.cycle(palette) \n", | |
| "\n", | |
| "for country, color in zip(countries, colors):\n", | |
| "\n", | |
| " data_indexed = data.set_index(\"Country/Region\")\n", | |
| " cases = data_indexed.loc[country].groupby(\"date\").sum()\n", | |
| " source = bokeh.models.ColumnDataSource(cases)\n", | |
| "\n", | |
| " d = cases.reset_index()\n", | |
| " fig.line(x=\"date\", y=\"Confirmed\", line_color=color, line_width=2, legend_label=country, source=d)\n", | |
| " fig.circle(x=\"date\", y=\"Confirmed\", size=8, fill_color=color, line_color=None, source=d, legend_label=country)\n", | |
| "\n", | |
| "fig.legend.location = \"top_left\"\n", | |
| "fig.legend.click_policy = \"hide\"\n", | |
| " \n", | |
| "fig.xgrid.grid_line_color = None\n", | |
| "fig.xaxis.axis_label = \"Date\"\n", | |
| "\n", | |
| "tooltips = [(\"Date\", \"@date{%F}\"), (\"Confirmed\", \"@Confirmed\"), (\"Deaths\", \"@Deaths\")]\n", | |
| "hover_tools = bokeh.models.HoverTool(tooltips=tooltips, formatters={'@date': 'datetime'})\n", | |
| "fig.add_tools(hover_tools)\n", | |
| "\n", | |
| "bokeh.io.show(fig)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "9.531332163313914" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "1.38**7" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "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>Province/State</th>\n", | |
| " <th>Country/Region</th>\n", | |
| " <th>Last Update</th>\n", | |
| " <th>Confirmed</th>\n", | |
| " <th>Deaths</th>\n", | |
| " <th>Recovered</th>\n", | |
| " <th>date</th>\n", | |
| " <th>Latitude</th>\n", | |
| " <th>Longitude</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>Hubei</td>\n", | |
| " <td>Mainland China</td>\n", | |
| " <td>2020-02-15T23:13:05</td>\n", | |
| " <td>56249</td>\n", | |
| " <td>1596</td>\n", | |
| " <td>5623</td>\n", | |
| " <td>2020-02-15</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>Guangdong</td>\n", | |
| " <td>Mainland China</td>\n", | |
| " <td>2020-02-15T14:03:04</td>\n", | |
| " <td>1294</td>\n", | |
| " <td>2</td>\n", | |
| " <td>410</td>\n", | |
| " <td>2020-02-15</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>Henan</td>\n", | |
| " <td>Mainland China</td>\n", | |
| " <td>2020-02-15T12:13:08</td>\n", | |
| " <td>1212</td>\n", | |
| " <td>13</td>\n", | |
| " <td>391</td>\n", | |
| " <td>2020-02-15</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>Zhejiang</td>\n", | |
| " <td>Mainland China</td>\n", | |
| " <td>2020-02-15T11:23:17</td>\n", | |
| " <td>1162</td>\n", | |
| " <td>0</td>\n", | |
| " <td>428</td>\n", | |
| " <td>2020-02-15</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>Hunan</td>\n", | |
| " <td>Mainland China</td>\n", | |
| " <td>2020-02-15T13:03:04</td>\n", | |
| " <td>1001</td>\n", | |
| " <td>2</td>\n", | |
| " <td>425</td>\n", | |
| " <td>2020-02-15</td>\n", | |
| " <td>NaN</td>\n", | |
| " <td>NaN</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Province/State Country/Region Last Update Confirmed Deaths \\\n", | |
| "0 Hubei Mainland China 2020-02-15T23:13:05 56249 1596 \n", | |
| "1 Guangdong Mainland China 2020-02-15T14:03:04 1294 2 \n", | |
| "2 Henan Mainland China 2020-02-15T12:13:08 1212 13 \n", | |
| "3 Zhejiang Mainland China 2020-02-15T11:23:17 1162 0 \n", | |
| "4 Hunan Mainland China 2020-02-15T13:03:04 1001 2 \n", | |
| "\n", | |
| " Recovered date Latitude Longitude \n", | |
| "0 5623 2020-02-15 NaN NaN \n", | |
| "1 410 2020-02-15 NaN NaN \n", | |
| "2 391 2020-02-15 NaN NaN \n", | |
| "3 428 2020-02-15 NaN NaN \n", | |
| "4 425 2020-02-15 NaN NaN " | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "data.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "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>Country/Region</th>\n", | |
| " <th>Last Update</th>\n", | |
| " <th>Confirmed</th>\n", | |
| " <th>Deaths</th>\n", | |
| " <th>Recovered</th>\n", | |
| " <th>date</th>\n", | |
| " <th>Latitude</th>\n", | |
| " <th>Longitude</th>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Province/State</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>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-09T08:43:03</td>\n", | |
| " <td>3</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-09</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-10T00:53:03</td>\n", | |
| " <td>4</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-10</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-11T23:13:06</td>\n", | |
| " <td>8</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-11</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-12T01:53:03</td>\n", | |
| " <td>9</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-12</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-11T20:00:00</td>\n", | |
| " <td>17</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-13</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-13T13:33:03</td>\n", | |
| " <td>17</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-14</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-15T01:53:02</td>\n", | |
| " <td>24</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-15</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-16T20:13:20</td>\n", | |
| " <td>50</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-16</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Quebec</th>\n", | |
| " <td>Canada</td>\n", | |
| " <td>2020-03-17T19:33:03</td>\n", | |
| " <td>74</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2020-03-17</td>\n", | |
| " <td>52.9399</td>\n", | |
| " <td>-73.5491</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Country/Region Last Update Confirmed Deaths \\\n", | |
| "Province/State \n", | |
| "Quebec Canada 2020-03-09T08:43:03 3 0 \n", | |
| "Quebec Canada 2020-03-10T00:53:03 4 0 \n", | |
| "Quebec Canada 2020-03-11T23:13:06 8 0 \n", | |
| "Quebec Canada 2020-03-12T01:53:03 9 0 \n", | |
| "Quebec Canada 2020-03-11T20:00:00 17 0 \n", | |
| "Quebec Canada 2020-03-13T13:33:03 17 0 \n", | |
| "Quebec Canada 2020-03-15T01:53:02 24 0 \n", | |
| "Quebec Canada 2020-03-16T20:13:20 50 0 \n", | |
| "Quebec Canada 2020-03-17T19:33:03 74 0 \n", | |
| "\n", | |
| " Recovered date Latitude Longitude \n", | |
| "Province/State \n", | |
| "Quebec 0 2020-03-09 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-10 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-11 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-12 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-13 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-14 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-15 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-16 52.9399 -73.5491 \n", | |
| "Quebec 0 2020-03-17 52.9399 -73.5491 " | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "data.set_index(\"Province/State\").loc[\"Quebec\"]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python [conda env:mol]", | |
| "language": "python", | |
| "name": "conda-env-mol-py" | |
| }, | |
| "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.7.6" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment