Skip to content

Instantly share code, notes, and snippets.

@HoverHell
Created March 13, 2020 17:10
Show Gist options
  • Save HoverHell/b0d55f30d89917224d4c87cfbf0eceac to your computer and use it in GitHub Desktop.
Save HoverHell/b0d55f30d89917224d4c87cfbf0eceac to your computer and use it in GitHub Desktop.
covid_msk
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"FORCE_UPDATE = True\n",
"\n",
"url = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv'\n",
"fln = 'time_series_19-covid-Confirmed.csv'"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"\n",
"import pandas as pd\n",
"import altair as alt\n",
"import requests\n",
"\n",
"from pyaux.madness import IPNBDFDisplay as H\n",
"import pyauxm.pd_streamlib_patch"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"if not os.path.exists(fln) or FORCE_UPDATE:\n",
" resp = requests.get(url)\n",
" resp.raise_for_status()\n",
" with open(fln, 'w') as fobj:\n",
" fobj.write(resp.text)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"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>loc</th>\n",
" <th>date</th>\n",
" <th>count</th>\n",
" <th>count_diff</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4899</th>\n",
" <td>Reunion</td>\n",
" <td>2020-03-12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4900</th>\n",
" <td>Turkey</td>\n",
" <td>2020-03-12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4901</th>\n",
" <td>United Kingdom - Gibraltar</td>\n",
" <td>2020-03-12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4902</th>\n",
" <td>Cuba</td>\n",
" <td>2020-03-12</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4903</th>\n",
" <td>Guyana</td>\n",
" <td>2020-03-12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" loc date count count_diff\n",
"4899 Reunion 2020-03-12 1 0\n",
"4900 Turkey 2020-03-12 1 0\n",
"4901 United Kingdom - Gibraltar 2020-03-12 1 0\n",
"4902 Cuba 2020-03-12 3 0\n",
"4903 Guyana 2020-03-12 1 0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DF = pd.read_csv(fln)\n",
"col_renames = {\n",
" 'Province/State': 'state',\n",
" 'Country/Region': 'country',\n",
" 'Lat': 'lat',\n",
" 'Long': 'lon',\n",
"}\n",
"DF = DF.rename(columns=col_renames)\n",
"DF_BASE = DF.copy()\n",
"\n",
"tech_columns = list(col_renames.values())\n",
"DF = DF.melt(id_vars=tech_columns, var_name='date', value_name='count')\n",
"DF['date'] = pd.to_datetime(DF['date'], format='%m/%d/%y')\n",
"DF_FULL = DF\n",
"DF = DF.nexclude(count=0).copy()\n",
"DF['state'] = DF['state'].fillna('')\n",
"DF = DF.nproject(loc=lambda state, country: country if not state else f'{country} - {state}')\n",
"DF = DF[['loc', 'date', 'count']]\n",
"DF = DF.reset_index(drop=True)\n",
"\n",
"# 'daily new cases'\n",
"DF['count_diff'] = DF.sort_values('date').groupby('loc')['count'].transform(lambda series: series - series.shift())\n",
"DF['count_diff'] = DF['count_diff'].fillna(0).astype(int)\n",
"\n",
"# DF = DF.set_index('date')\n",
"DF.tail()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>date</th>\n",
" <th>2020-01-22</th>\n",
" <th>2020-01-23</th>\n",
" <th>2020-01-24</th>\n",
" <th>2020-01-25</th>\n",
" <th>2020-01-26</th>\n",
" <th>2020-01-27</th>\n",
" <th>2020-01-28</th>\n",
" <th>2020-01-29</th>\n",
" <th>2020-01-30</th>\n",
" <th>2020-01-31</th>\n",
" <th>2020-02-01</th>\n",
" <th>2020-02-02</th>\n",
" <th>2020-02-03</th>\n",
" <th>2020-02-04</th>\n",
" <th>2020-02-05</th>\n",
" <th>2020-02-06</th>\n",
" <th>2020-02-07</th>\n",
" <th>2020-02-08</th>\n",
" <th>2020-02-09</th>\n",
" <th>2020-02-10</th>\n",
" <th>2020-02-11</th>\n",
" <th>2020-02-12</th>\n",
" <th>2020-02-13</th>\n",
" <th>2020-02-14</th>\n",
" <th>2020-02-15</th>\n",
" <th>2020-02-16</th>\n",
" <th>2020-02-17</th>\n",
" <th>2020-02-18</th>\n",
" <th>2020-02-19</th>\n",
" <th>2020-02-20</th>\n",
" <th>2020-02-21</th>\n",
" <th>2020-02-22</th>\n",
" <th>2020-02-23</th>\n",
" <th>2020-02-24</th>\n",
" <th>2020-02-25</th>\n",
" <th>2020-02-26</th>\n",
" <th>2020-02-27</th>\n",
" <th>2020-02-28</th>\n",
" <th>2020-02-29</th>\n",
" <th>2020-03-01</th>\n",
" <th>2020-03-02</th>\n",
" <th>2020-03-03</th>\n",
" <th>2020-03-04</th>\n",
" <th>2020-03-05</th>\n",
" <th>2020-03-06</th>\n",
" <th>2020-03-07</th>\n",
" <th>2020-03-08</th>\n",
" <th>2020-03-09</th>\n",
" <th>2020-03-10</th>\n",
" <th>2020-03-11</th>\n",
" <th>2020-03-12</th>\n",
" <th>average_prior</th>\n",
" <th>max_prior</th>\n",
" </tr>\n",
" <tr>\n",
" <th>loc</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",
" <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",
" <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>China - Hubei</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>105</td>\n",
" <td>212</td>\n",
" <td>297</td>\n",
" <td>365</td>\n",
" <td>2131</td>\n",
" <td>0</td>\n",
" <td>1349</td>\n",
" <td>903</td>\n",
" <td>1347</td>\n",
" <td>4024</td>\n",
" <td>2345</td>\n",
" <td>3156</td>\n",
" <td>2987</td>\n",
" <td>2447</td>\n",
" <td>2841</td>\n",
" <td>2147</td>\n",
" <td>2531</td>\n",
" <td>2097</td>\n",
" <td>1638</td>\n",
" <td>0</td>\n",
" <td>14840</td>\n",
" <td>6200</td>\n",
" <td>1843</td>\n",
" <td>1933</td>\n",
" <td>1807</td>\n",
" <td>1693</td>\n",
" <td>349</td>\n",
" <td>411</td>\n",
" <td>220</td>\n",
" <td>1422</td>\n",
" <td>0</td>\n",
" <td>203</td>\n",
" <td>499</td>\n",
" <td>401</td>\n",
" <td>409</td>\n",
" <td>318</td>\n",
" <td>423</td>\n",
" <td>570</td>\n",
" <td>196</td>\n",
" <td>114</td>\n",
" <td>115</td>\n",
" <td>134</td>\n",
" <td>126</td>\n",
" <td>74</td>\n",
" <td>41</td>\n",
" <td>36</td>\n",
" <td>17</td>\n",
" <td>13</td>\n",
" <td>8</td>\n",
" <td>142</td>\n",
" <td>570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Korea, South</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>73</td>\n",
" <td>100</td>\n",
" <td>229</td>\n",
" <td>169</td>\n",
" <td>231</td>\n",
" <td>144</td>\n",
" <td>284</td>\n",
" <td>505</td>\n",
" <td>571</td>\n",
" <td>813</td>\n",
" <td>586</td>\n",
" <td>599</td>\n",
" <td>851</td>\n",
" <td>435</td>\n",
" <td>467</td>\n",
" <td>505</td>\n",
" <td>448</td>\n",
" <td>273</td>\n",
" <td>164</td>\n",
" <td>35</td>\n",
" <td>242</td>\n",
" <td>114</td>\n",
" <td>436</td>\n",
" <td>851</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfx = DF.copy()\n",
"dfx['date'] = dfx['date'].dt.strftime('%Y-%m-%d')\n",
"dfx = dfx.pivot(index='loc', columns='date', values='count_diff').fillna(0)\n",
"# dfx = dfx.loc[['Italy']]\n",
"dfx = dfx[dfx['2020-03-11'] > 5]\n",
"# dfx[dfx['2020-03-11'] < dfx['20']]\n",
"some_chunk = [col for col in dfx.columns if '2020-03-01' <= col < '2020-03-11']\n",
"average_prior = dfx[some_chunk].sum(axis=1) / len(some_chunk)\n",
"dfx['average_prior'] = average_prior\n",
"max_prior = average_prior = dfx[some_chunk].max(axis=1)\n",
"dfx['max_prior'] = max_prior\n",
"H(dfx[dfx['2020-03-11'] < dfx['average_prior']].astype(int))\n",
"1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Russia'}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(item for item in DF['loc'] if 'russ' in item.lower())"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'France - France',\n",
" 'France - Saint Barthelemy',\n",
" 'France - St Martin',\n",
" 'US - San Francisco County, CA'}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(item for item in DF['loc'] if 'fran' in item.lower())"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"THIS = 'Russia'\n",
"OTHERS = (\n",
" 'France - France',\n",
" 'Iran',\n",
" 'Korea, South',\n",
")\n",
"OTHER = OTHERS[-1]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1a973121588>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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Jk2a5D1+7733ctttt7F06VKWLVvGfffdxzvvvANAYWEhH3/8MUajkUceeYSLLrqIZcuWYbVamT17NhdffDHp6en885//JDIykgMHDnDTTTd5hdgX06ZNIyMjg9GjR7No0SKuvfZalixZAsBtt93GM888w/z583n00Uf5xS9+wR/+8Aef14mIiODxxx9n69atPPvss4DLltm3bx+ffPIJNTU1TJw4kXvuuSek88PDidRYC4dO16E1JEbJPRkKeBYyHbIewqRMxJhjenUdmVDtArPZzJw5c3jppZfaHP/888+5+WZXCdNvfetbbNq0yZbofyoAACAASURBVPvY9ddfj9HoyuX+6KOPePLJJ5k+fToLFiygsbGR48ePY7fbueuuu8jNzeX6669nz549XY7DaDSydu1aVq9ezYQJE3jggQd47LHHsNlsWK1W5s+fD8DSpUvZsGFDj//OxYsXY7FYSE1NJT09ndLS0h5fQwgOaXEWCktrACRbZojg2Uv1kPUQ8Zb4Xmd+hYTn3l2EHSwMBgNvvvkmF198MU888QSPPPKIz3atn/yYmDOfslpr3nrrLSZObFs46bHHHiMjI4P8/HycTieRkd1XSlRKMXv2bGbPns0ll1zCHXfcwQMPPNBpe5PJhNNd06W7fG+LxeL92Wg04nA4uh2P0D+kxbr2UgVZnTpU8ETuNfYaxkSP6fV1xHPvhujoaN5//31WrFjhjeDnzJnDG2+8AcCKFSu44IILfJ572WWX8cwzz6C1BuCrr74CwGazMXz4cAwGA8uXL6el5cwmyK3tHw8nT55k+/bt3t937NjBWWedRUJCAklJSWzcuBGA5cuXe6P47Oxstm3bBsDq1au958bFxVFTU9O7J0Pod1Ljzgi6pEIODRIsCZiUK+7urd8OIRK5DzTJycmsXbuWCy+8kNTUVJ5++mnuvPNOfvvb35KWlsbLL7/s87yf/exn3H///eTl5aG1Jjs7m/fff5/vfe97XHfddaxatYqFCxd6o/3y8nLvB0Fr7HY7Dz74ICdPniQyMpK0tDSef/55AF599VW++93vUl9fz5gxY7xjefDBB7nhhhtYvnw5F110kfdaCxcu9FpFDz/8cKCfKiHAeDbKBikaNlQwKAPJkcmUNZT1OlMGQPkSk/5m1qxZuv2E4t69e5k8efIAjWhgeP/99zl8+DD33XffQA8l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8K1vfYtNmzZ5H7v++usxGl1L7D/66COefPJJpk+fzoIFC2hsbOT48ePY7XbuuusucnNzuf7669mzZ0+X4zAajaxdu5bVq1czYcIEHnjgAR577DFsNhtWq5X58+cDsHTpUjZs2NDjv3Px4sVYLBZSU1NJT0+ntLS0Q5vKykri4uIAyM3N5eOPP+ahhx5i48aNtLbVrr32WgDOPvtsjh492qNxrFu3jm3btnHOOecwffp01q1bx+HDh/niiy9YsGABaWlpRERE8M1vfrPNeenp6Zw8ebKHf7UghDchEbl3F2EHC4PBwJtvvsnFF1/ME088wSOPPOKznVLK+3NMTIz3Z601b731FhMnTmzT/rHHHiMjI4P8/HycTieRkd3vk6iUYvbs2cyePZtLLrmEO+64gwceeKDT9q3LEntKEneGxWLx/mw0Gn3OF3iuZzAYmDBhAtu2bWPNmjU8/PDDXHrppTz66KNtrtXZdbpCa83SpUv5r//6rzbH33nnnTbPcXsaGxuJiorqUV+CEO5I5N4N0dHRvP/++6xYscIbwc+ZM4c33ngDcHnRF1xwgc9zL7vsMp555hk8xdm++uorwGVjDB8+HIPBwPLly9tUgmxt/3g4efIk27dv9/6+Y8cOzjrrLBISEkhKSmLjxo0ALF++3BvFZ2dns23bNgBWr17tPTcuLo6ampoePw8TJ07k8OHD3vFER0dz66238uCDD7YZW08xm83Y7XYAFi1axOrVqykrKwNc3xaOHTvGueeey/r166moqMBut7Nq1ao21ygsLCQnp/e7xAtCOBISkftAk5yczNq1a7nwwgtJTU3l6aef5s477+S3v/0taWlpnabi/exnP+P+++8nLy8PrTXZ2dm8//77fO973+O6665j1apVLFy40Bvtl5eX46tKp91u58EHH+TkyZNERkaSlpbG888/D8Crr77Kd7/7Xerr6xkzZox3LA8++CA33HADy5cv56KLLvJea+HChV6r6OGHH/b7OVi8eDHr169n3Lhx7Nq1ix/96EcYDAbMZjN/+tOf/L5Oe+6++27y8vKYOXMmK1as4Fe/+hWXXnopTqcTs9nMc889x3nnncdjjz3G+eefz/Dhw5k5c2abD8TNmzfz85//vNdjEIRwREr+DiLef/99Dh8+zH333TfQQ+nAqVOnuO222/jnP//Z43ODWfL3q6++4ne/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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"dfx = (\n",
" DF\n",
" .nfilter(loc__in=(THIS, OTHER))\n",
" # .nexclude(count_diff=0)\n",
" .pivot(index='date', columns='loc', values='count_diff')\n",
" .fillna(0)\n",
")\n",
"dfs = dfx[OTHER].copy()\n",
"dfs.index = dfs.index.copy() + pd.Timedelta(30, unit='days')\n",
"dfs.name = f'{OTHER} (shifted)'\n",
"dfx = dfx.join(dfs, how='outer')\n",
"dfx.plot(logy=True)\n",
"# dfs"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<div id=\"altair-viz-3\"></div>\n",
"<script type=\"text/javascript\">\n",
" (function(spec, embedOpt){\n",
" const outputDiv = document.getElementById(\"altair-viz-3\");\n",
" const paths = {\n",
" \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.0.0?noext\",\n",
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n",
" };\n",
"\n",
" function loadScript(lib) {\n",
" return new Promise(function(resolve, reject) {\n",
" var s = document.createElement('script');\n",
" s.src = paths[lib];\n",
" s.async = true;\n",
" s.onload = () => resolve(paths[lib]);\n",
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" });\n",
" }\n",
"\n",
" function showError(err) {\n",
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
" throw err;\n",
" }\n",
"\n",
" function displayChart(vegaEmbed) {\n",
" vegaEmbed(outputDiv, spec, embedOpt)\n",
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
" }\n",
"\n",
" if(typeof define === \"function\" && define.amd) {\n",
" requirejs.config({paths});\n",
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
" } else if (typeof vegaEmbed === \"function\") {\n",
" displayChart(vegaEmbed);\n",
" } else {\n",
" loadScript(\"vega\")\n",
" .then(() => loadScript(\"vega-lite\"))\n",
" .then(() => loadScript(\"vega-embed\"))\n",
" .catch(showError)\n",
" .then(() => displayChart(vegaEmbed));\n",
" }\n",
" })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-1c94c71c3942f160ef35499eb55c197b\"}, \"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"loc\"}, \"x\": {\"type\": \"temporal\", \"field\": \"date\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"count_diff\", \"scale\": {\"type\": \"log\"}}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.0.0.json\", \"datasets\": {\"data-1c94c71c3942f160ef35499eb55c197b\": [{\"loc\": \"Korea, South\", \"date\": \"2020-01-24T00:00:00\", \"count\": 2, \"count_diff\": 1}, {\"loc\": \"France - France\", \"date\": \"2020-01-25T00:00:00\", \"count\": 3, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-01-26T00:00:00\", \"count\": 3, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-01-27T00:00:00\", \"count\": 4, \"count_diff\": 1}, {\"loc\": \"France - France\", \"date\": \"2020-01-28T00:00:00\", \"count\": 4, \"count_diff\": 1}, {\"loc\": \"France - France\", \"date\": \"2020-01-29T00:00:00\", \"count\": 5, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-01-31T00:00:00\", \"count\": 11, \"count_diff\": 7}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-01T00:00:00\", \"count\": 12, \"count_diff\": 1}, {\"loc\": \"France - France\", \"date\": \"2020-02-01T00:00:00\", \"count\": 6, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-02T00:00:00\", \"count\": 15, \"count_diff\": 3}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-04T00:00:00\", \"count\": 16, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-05T00:00:00\", \"count\": 19, \"count_diff\": 3}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-06T00:00:00\", \"count\": 23, \"count_diff\": 4}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-07T00:00:00\", \"count\": 24, \"count_diff\": 1}, {\"loc\": \"France - France\", \"date\": \"2020-02-08T00:00:00\", \"count\": 11, \"count_diff\": 5}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-09T00:00:00\", \"count\": 25, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-10T00:00:00\", \"count\": 27, \"count_diff\": 2}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-11T00:00:00\", \"count\": 28, \"count_diff\": 1}, {\"loc\": \"France - France\", \"date\": \"2020-02-15T00:00:00\", \"count\": 12, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-16T00:00:00\", \"count\": 29, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-17T00:00:00\", \"count\": 30, \"count_diff\": 1}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-18T00:00:00\", \"count\": 31, \"count_diff\": 1}, {\"loc\": \"Iran\", \"date\": \"2020-02-20T00:00:00\", \"count\": 5, \"count_diff\": 3}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-20T00:00:00\", \"count\": 104, \"count_diff\": 73}, {\"loc\": \"Iran\", \"date\": \"2020-02-21T00:00:00\", \"count\": 18, \"count_diff\": 13}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-21T00:00:00\", \"count\": 204, \"count_diff\": 100}, {\"loc\": \"Iran\", \"date\": \"2020-02-22T00:00:00\", \"count\": 28, \"count_diff\": 10}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-22T00:00:00\", \"count\": 433, \"count_diff\": 229}, {\"loc\": \"Iran\", \"date\": \"2020-02-23T00:00:00\", \"count\": 43, \"count_diff\": 15}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-23T00:00:00\", \"count\": 602, \"count_diff\": 169}, {\"loc\": \"Iran\", \"date\": \"2020-02-24T00:00:00\", \"count\": 61, \"count_diff\": 18}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-24T00:00:00\", \"count\": 833, \"count_diff\": 231}, {\"loc\": \"Iran\", \"date\": \"2020-02-25T00:00:00\", \"count\": 95, \"count_diff\": 34}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-25T00:00:00\", \"count\": 977, \"count_diff\": 144}, {\"loc\": \"France - France\", \"date\": \"2020-02-25T00:00:00\", \"count\": 14, \"count_diff\": 2}, {\"loc\": \"Iran\", \"date\": \"2020-02-26T00:00:00\", \"count\": 139, \"count_diff\": 44}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-26T00:00:00\", \"count\": 1261, \"count_diff\": 284}, {\"loc\": \"France - France\", \"date\": \"2020-02-26T00:00:00\", \"count\": 18, \"count_diff\": 4}, {\"loc\": \"Iran\", \"date\": \"2020-02-27T00:00:00\", \"count\": 245, \"count_diff\": 106}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-27T00:00:00\", \"count\": 1766, \"count_diff\": 505}, {\"loc\": \"France - France\", \"date\": \"2020-02-27T00:00:00\", \"count\": 38, \"count_diff\": 20}, {\"loc\": \"Iran\", \"date\": \"2020-02-28T00:00:00\", \"count\": 388, \"count_diff\": 143}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-28T00:00:00\", \"count\": 2337, \"count_diff\": 571}, {\"loc\": \"France - France\", \"date\": \"2020-02-28T00:00:00\", \"count\": 57, \"count_diff\": 19}, {\"loc\": \"Iran\", \"date\": \"2020-02-29T00:00:00\", \"count\": 593, \"count_diff\": 205}, {\"loc\": \"Korea, South\", \"date\": \"2020-02-29T00:00:00\", \"count\": 3150, \"count_diff\": 813}, {\"loc\": \"France - France\", \"date\": \"2020-02-29T00:00:00\", \"count\": 100, \"count_diff\": 43}, {\"loc\": \"Iran\", \"date\": \"2020-03-01T00:00:00\", \"count\": 978, \"count_diff\": 385}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-01T00:00:00\", \"count\": 3736, \"count_diff\": 586}, {\"loc\": \"France - France\", \"date\": \"2020-03-01T00:00:00\", \"count\": 130, \"count_diff\": 30}, {\"loc\": \"Iran\", \"date\": \"2020-03-02T00:00:00\", \"count\": 1501, \"count_diff\": 523}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-02T00:00:00\", \"count\": 4335, \"count_diff\": 599}, {\"loc\": \"France - France\", \"date\": \"2020-03-02T00:00:00\", \"count\": 191, \"count_diff\": 61}, {\"loc\": \"Russia\", \"date\": \"2020-03-02T00:00:00\", \"count\": 3, \"count_diff\": 1}, {\"loc\": \"Iran\", \"date\": \"2020-03-03T00:00:00\", \"count\": 2336, \"count_diff\": 835}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-03T00:00:00\", \"count\": 5186, \"count_diff\": 851}, {\"loc\": \"France - France\", \"date\": \"2020-03-03T00:00:00\", \"count\": 204, \"count_diff\": 13}, {\"loc\": \"Iran\", \"date\": \"2020-03-04T00:00:00\", \"count\": 2922, \"count_diff\": 586}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-04T00:00:00\", \"count\": 5621, \"count_diff\": 435}, {\"loc\": \"France - France\", \"date\": \"2020-03-04T00:00:00\", \"count\": 285, \"count_diff\": 81}, {\"loc\": \"Iran\", \"date\": \"2020-03-05T00:00:00\", \"count\": 3513, \"count_diff\": 591}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-05T00:00:00\", \"count\": 6088, \"count_diff\": 467}, {\"loc\": \"France - France\", \"date\": \"2020-03-05T00:00:00\", \"count\": 377, \"count_diff\": 92}, {\"loc\": \"Russia\", \"date\": \"2020-03-05T00:00:00\", \"count\": 4, \"count_diff\": 1}, {\"loc\": \"Iran\", \"date\": \"2020-03-06T00:00:00\", \"count\": 4747, \"count_diff\": 1234}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-06T00:00:00\", \"count\": 6593, \"count_diff\": 505}, {\"loc\": \"France - France\", \"date\": \"2020-03-06T00:00:00\", \"count\": 653, \"count_diff\": 276}, {\"loc\": \"Russia\", \"date\": \"2020-03-06T00:00:00\", \"count\": 13, \"count_diff\": 9}, {\"loc\": \"Iran\", \"date\": \"2020-03-07T00:00:00\", \"count\": 5823, \"count_diff\": 1076}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-07T00:00:00\", \"count\": 7041, \"count_diff\": 448}, {\"loc\": \"France - France\", \"date\": \"2020-03-07T00:00:00\", \"count\": 949, \"count_diff\": 296}, {\"loc\": \"Iran\", \"date\": \"2020-03-08T00:00:00\", \"count\": 6566, \"count_diff\": 743}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-08T00:00:00\", \"count\": 7314, \"count_diff\": 273}, {\"loc\": \"France - France\", \"date\": \"2020-03-08T00:00:00\", \"count\": 1126, \"count_diff\": 177}, {\"loc\": \"Russia\", \"date\": \"2020-03-08T00:00:00\", \"count\": 17, \"count_diff\": 4}, {\"loc\": \"Iran\", \"date\": \"2020-03-09T00:00:00\", \"count\": 7161, \"count_diff\": 595}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-09T00:00:00\", \"count\": 7478, \"count_diff\": 164}, {\"loc\": \"France - France\", \"date\": \"2020-03-09T00:00:00\", \"count\": 1209, \"count_diff\": 83}, {\"loc\": \"Iran\", \"date\": \"2020-03-10T00:00:00\", \"count\": 8042, \"count_diff\": 881}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-10T00:00:00\", \"count\": 7513, \"count_diff\": 35}, {\"loc\": \"France - France\", \"date\": \"2020-03-10T00:00:00\", \"count\": 1784, \"count_diff\": 575}, {\"loc\": \"Russia\", \"date\": \"2020-03-10T00:00:00\", \"count\": 20, \"count_diff\": 3}, {\"loc\": \"Iran\", \"date\": \"2020-03-11T00:00:00\", \"count\": 9000, \"count_diff\": 958}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-11T00:00:00\", \"count\": 7755, \"count_diff\": 242}, {\"loc\": \"France - France\", \"date\": \"2020-03-11T00:00:00\", \"count\": 2281, \"count_diff\": 497}, {\"loc\": \"Iran\", \"date\": \"2020-03-12T00:00:00\", \"count\": 10075, \"count_diff\": 1075}, {\"loc\": \"Korea, South\", \"date\": \"2020-03-12T00:00:00\", \"count\": 7869, \"count_diff\": 114}, {\"loc\": \"Russia\", \"date\": \"2020-03-12T00:00:00\", \"count\": 28, \"count_diff\": 8}]}}, {\"mode\": \"vega-lite\"});\n",
"</script>"
],
"text/plain": [
"alt.Chart(...)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"chart = (\n",
" alt.Chart(\n",
" DF.nfilter(loc__in=(THIS,) + OTHERS).nexclude(count_diff=0),\n",
" )\n",
" .mark_line()\n",
" .encode(\n",
" alt.X('date'),\n",
" alt.Y(\n",
" 'count_diff',\n",
" scale=alt.Scale(type='log'),\n",
" ),\n",
" alt.Color('loc'),\n",
" )\n",
")\n",
"chart"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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>loc</th>\n",
" <th>date</th>\n",
" <th>count</th>\n",
" <th>count_diff</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>472</th>\n",
" <td>Russia</td>\n",
" <td>2020-01-31</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>538</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-01</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>605</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-02</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>672</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-03</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>741</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-04</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>810</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-05</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>879</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-06</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>949</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-07</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1019</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-08</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1089</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-09</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1159</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-10</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1229</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-11</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1300</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-12</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1371</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-13</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1443</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-14</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1515</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-15</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1587</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-16</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1659</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-17</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1731</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-18</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1804</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-19</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1877</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-20</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1953</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-21</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2031</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-22</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2109</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-23</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2193</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-24</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2281</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-25</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2376</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-26</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2475</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-27</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2581</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-28</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2691</th>\n",
" <td>Russia</td>\n",
" <td>2020-02-29</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2808</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-01</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2934</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-02</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3071</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-03</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3218</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-04</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3372</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-05</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3544</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-06</td>\n",
" <td>13</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3734</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-07</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3947</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-08</td>\n",
" <td>17</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4187</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-09</td>\n",
" <td>17</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4479</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-10</td>\n",
" <td>20</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4676</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-11</td>\n",
" <td>20</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4884</th>\n",
" <td>Russia</td>\n",
" <td>2020-03-12</td>\n",
" <td>28</td>\n",
" <td>8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" loc date count count_diff\n",
"472 Russia 2020-01-31 2 0\n",
"538 Russia 2020-02-01 2 0\n",
"605 Russia 2020-02-02 2 0\n",
"672 Russia 2020-02-03 2 0\n",
"741 Russia 2020-02-04 2 0\n",
"810 Russia 2020-02-05 2 0\n",
"879 Russia 2020-02-06 2 0\n",
"949 Russia 2020-02-07 2 0\n",
"1019 Russia 2020-02-08 2 0\n",
"1089 Russia 2020-02-09 2 0\n",
"1159 Russia 2020-02-10 2 0\n",
"1229 Russia 2020-02-11 2 0\n",
"1300 Russia 2020-02-12 2 0\n",
"1371 Russia 2020-02-13 2 0\n",
"1443 Russia 2020-02-14 2 0\n",
"1515 Russia 2020-02-15 2 0\n",
"1587 Russia 2020-02-16 2 0\n",
"1659 Russia 2020-02-17 2 0\n",
"1731 Russia 2020-02-18 2 0\n",
"1804 Russia 2020-02-19 2 0\n",
"1877 Russia 2020-02-20 2 0\n",
"1953 Russia 2020-02-21 2 0\n",
"2031 Russia 2020-02-22 2 0\n",
"2109 Russia 2020-02-23 2 0\n",
"2193 Russia 2020-02-24 2 0\n",
"2281 Russia 2020-02-25 2 0\n",
"2376 Russia 2020-02-26 2 0\n",
"2475 Russia 2020-02-27 2 0\n",
"2581 Russia 2020-02-28 2 0\n",
"2691 Russia 2020-02-29 2 0\n",
"2808 Russia 2020-03-01 2 0\n",
"2934 Russia 2020-03-02 3 1\n",
"3071 Russia 2020-03-03 3 0\n",
"3218 Russia 2020-03-04 3 0\n",
"3372 Russia 2020-03-05 4 1\n",
"3544 Russia 2020-03-06 13 9\n",
"3734 Russia 2020-03-07 13 0\n",
"3947 Russia 2020-03-08 17 4\n",
"4187 Russia 2020-03-09 17 0\n",
"4479 Russia 2020-03-10 20 3\n",
"4676 Russia 2020-03-11 20 0\n",
"4884 Russia 2020-03-12 28 8"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DF.nfilter(loc='Russia')"
]
}
],
"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.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment