Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save abegehr/f620ee57ee2e53df6235812c41d0f132 to your computer and use it in GitHub Desktop.
Save abegehr/f620ee57ee2e53df6235812c41d0f132 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
"_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/kaggle/input/covid19-global-forecasting-week-2/train.csv\n",
"/kaggle/input/covid19-global-forecasting-week-2/submission.csv\n",
"/kaggle/input/covid19-global-forecasting-week-2/test.csv\n",
"/kaggle/input/countryinfo/covid19countryinfo.csv\n",
"/kaggle/input/countryinfo/restrictions.csv\n"
]
}
],
"source": [
"import os\n",
"for dirname, _, filenames in os.walk('/kaggle/input'):\n",
" for filename in filenames:\n",
" print(os.path.join(dirname, filename))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 0. Load Data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0",
"_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a"
},
"outputs": [],
"source": [
"submission = pd.read_csv(\"../input/covid19-global-forecasting-week-2/submission.csv\")\n",
"test = pd.read_csv(\"../input/covid19-global-forecasting-week-2/test.csv\", parse_dates=['Date'])\n",
"train = pd.read_csv(\"../input/covid19-global-forecasting-week-2/train.csv\", parse_dates=['Date'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1. Exploratory Data Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.1 Input"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1.1 train"
]
},
{
"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>Id</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-22</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-23</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-24</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-25</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-26</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Id Province_State Country_Region Date ConfirmedCases Fatalities\n",
"0 1 NaN Afghanistan 2020-01-22 0.0 0.0\n",
"1 2 NaN Afghanistan 2020-01-23 0.0 0.0\n",
"2 3 NaN Afghanistan 2020-01-24 0.0 0.0\n",
"3 4 NaN Afghanistan 2020-01-25 0.0 0.0\n",
"4 5 NaN Afghanistan 2020-01-26 0.0 0.0"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Id</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>19698.000000</td>\n",
" <td>19698.000000</td>\n",
" <td>19698.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>14684.000000</td>\n",
" <td>418.251447</td>\n",
" <td>16.258097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>8487.237333</td>\n",
" <td>3985.736398</td>\n",
" <td>228.217866</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>7334.250000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>14684.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>22033.750000</td>\n",
" <td>22.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>29367.000000</td>\n",
" <td>92472.000000</td>\n",
" <td>10023.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Id ConfirmedCases Fatalities\n",
"count 19698.000000 19698.000000 19698.000000\n",
"mean 14684.000000 418.251447 16.258097\n",
"std 8487.237333 3985.736398 228.217866\n",
"min 1.000000 0.000000 0.000000\n",
"25% 7334.250000 0.000000 0.000000\n",
"50% 14684.000000 0.000000 0.000000\n",
"75% 22033.750000 22.000000 0.000000\n",
"max 29367.000000 92472.000000 10023.000000"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Id int64\n",
"Province_State object\n",
"Country_Region object\n",
"Date datetime64[ns]\n",
"ConfirmedCases float64\n",
"Fatalities float64\n",
"dtype: object\n",
"\n",
"\n",
"Number of Country_Region: 173\n",
"Dates go from day 2020-03-28 00:00:00 to day 2020-01-22 00:00:00 , a total of 67 days\n",
"Countries with Province/State informed: ['Australia' 'Canada' 'China' 'Denmark' 'France' 'Netherlands' 'US'\n",
" 'United Kingdom']\n"
]
}
],
"source": [
"display(train.head(5))\n",
"display(train.describe())\n",
"print(train.dtypes)\n",
"print(\"\\n\")\n",
"print(\"Number of Country_Region: \", train['Country_Region'].nunique())\n",
"print(\"Dates go from day\", max(train['Date']), \"to day\", min(train['Date']), \", a total of\", train['Date'].nunique(), \"days\")\n",
"print(\"Countries with Province/State informed: \", train[train['Province_State'].isna()==False]['Country_Region'].unique())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1.2 test"
]
},
{
"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>ForecastId</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-23</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ForecastId Province_State Country_Region Date\n",
"0 1 NaN Afghanistan 2020-03-19\n",
"1 2 NaN Afghanistan 2020-03-20\n",
"2 3 NaN Afghanistan 2020-03-21\n",
"3 4 NaN Afghanistan 2020-03-22\n",
"4 5 NaN Afghanistan 2020-03-23"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ForecastId</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>12642.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>6321.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>3649.575386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>3161.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>6321.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>9481.750000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>12642.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ForecastId\n",
"count 12642.000000\n",
"mean 6321.500000\n",
"std 3649.575386\n",
"min 1.000000\n",
"25% 3161.250000\n",
"50% 6321.500000\n",
"75% 9481.750000\n",
"max 12642.000000"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of Country_Region: 173\n",
"Dates go from day 2020-04-30 00:00:00 to day 2020-03-19 00:00:00 , a total of 43 days\n",
"Countries with Province/State informed: ['Australia' 'Canada' 'China' 'Denmark' 'France' 'Netherlands' 'US'\n",
" 'United Kingdom']\n"
]
}
],
"source": [
"display(test.head(5))\n",
"display(test.describe())\n",
"print(\"Number of Country_Region: \", test['Country_Region'].nunique())\n",
"print(\"Dates go from day\", max(test['Date']), \"to day\", min(test['Date']), \", a total of\", test['Date'].nunique(), \"days\")\n",
"print(\"Countries with Province/State informed: \", test[test['Province_State'].isna()==False]['Country_Region'].unique())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1.3 Submission"
]
},
{
"cell_type": "code",
"execution_count": 6,
"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>ForecastId</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ForecastId ConfirmedCases Fatalities\n",
"0 1 1 1\n",
"1 2 1 1\n",
"2 3 1 1\n",
"3 4 1 1\n",
"4 5 1 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ForecastId</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>12642.000000</td>\n",
" <td>12642.0</td>\n",
" <td>12642.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>6321.500000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>3649.575386</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>3161.250000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>6321.500000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>9481.750000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>12642.000000</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ForecastId ConfirmedCases Fatalities\n",
"count 12642.000000 12642.0 12642.0\n",
"mean 6321.500000 1.0 1.0\n",
"std 3649.575386 0.0 0.0\n",
"min 1.000000 1.0 1.0\n",
"25% 3161.250000 1.0 1.0\n",
"50% 6321.500000 1.0 1.0\n",
"75% 9481.750000 1.0 1.0\n",
"max 12642.000000 1.0 1.0"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(submission.head(5))\n",
"display(submission.describe())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.2 Cases by Region over Time"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2.1 geo_id = Country_Region + Province_State\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>Id</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" <th>geo_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-22</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-23</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-24</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-25</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-01-26</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Id Province_State Country_Region Date ConfirmedCases Fatalities \\\n",
"0 1 NaN Afghanistan 2020-01-22 0.0 0.0 \n",
"1 2 NaN Afghanistan 2020-01-23 0.0 0.0 \n",
"2 3 NaN Afghanistan 2020-01-24 0.0 0.0 \n",
"3 4 NaN Afghanistan 2020-01-25 0.0 0.0 \n",
"4 5 NaN Afghanistan 2020-01-26 0.0 0.0 \n",
"\n",
" geo_id \n",
"0 Afghanistan_nan \n",
"1 Afghanistan_nan \n",
"2 Afghanistan_nan \n",
"3 Afghanistan_nan \n",
"4 Afghanistan_nan "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train['geo_id'] = train['Country_Region'].astype(str) + '_' + train['Province_State'].astype(str)\n",
"train.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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>ForecastId</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" <th>geo_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-19</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-20</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-21</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-22</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-23</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ForecastId Province_State Country_Region Date geo_id\n",
"0 1 NaN Afghanistan 2020-03-19 Afghanistan_nan\n",
"1 2 NaN Afghanistan 2020-03-20 Afghanistan_nan\n",
"2 3 NaN Afghanistan 2020-03-21 Afghanistan_nan\n",
"3 4 NaN Afghanistan 2020-03-22 Afghanistan_nan\n",
"4 5 NaN Afghanistan 2020-03-23 Afghanistan_nan"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test['geo_id'] = test['Country_Region'].astype(str) + '_' + test['Province_State'].astype(str)\n",
"test.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2.2 combined plot"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"geo_id\n",
"Afghanistan_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Albania_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Algeria_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Andorra_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Angola_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
" ... \n",
"Uzbekistan_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Venezuela_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Vietnam_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Zambia_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Zimbabwe_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Length: 294, dtype: object"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"train.sort_values(by=\"Date\").groupby('geo_id').plot.line(x='Date', y='ConfirmedCases', ax=ax, legend=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2.3 single plots"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"#train.groupby('geo_id').plot.line(x='Date', y='ConfirmedCases')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.3 China"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Anhui', 'Beijing', 'Chongqing', 'Fujian', 'Gansu', 'Guangdong',\n",
" 'Guangxi', 'Guizhou', 'Hainan', 'Hebei', 'Heilongjiang', 'Henan',\n",
" 'Hong Kong', 'Hubei', 'Hunan', 'Inner Mongolia', 'Jiangsu',\n",
" 'Jiangxi', 'Jilin', 'Liaoning', 'Macau', 'Ningxia', 'Qinghai',\n",
" 'Shaanxi', 'Shandong', 'Shanghai', 'Shanxi', 'Sichuan', 'Tianjin',\n",
" 'Tibet', 'Xinjiang', 'Yunnan', 'Zhejiang'], dtype=object)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[train.Country_Region == \"China\"].Province_State.unique()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"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>Id</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Province_State</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Anhui</th>\n",
" <td>330578</td>\n",
" <td>52597.0</td>\n",
" <td>281.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Beijing</th>\n",
" <td>337278</td>\n",
" <td>23817.0</td>\n",
" <td>322.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Chongqing</th>\n",
" <td>343978</td>\n",
" <td>31550.0</td>\n",
" <td>287.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fujian</th>\n",
" <td>350678</td>\n",
" <td>16558.0</td>\n",
" <td>38.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Gansu</th>\n",
" <td>357378</td>\n",
" <td>5956.0</td>\n",
" <td>99.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Guangdong</th>\n",
" <td>364078</td>\n",
" <td>74255.0</td>\n",
" <td>305.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Guangxi</th>\n",
" <td>370778</td>\n",
" <td>13622.0</td>\n",
" <td>94.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Guizhou</th>\n",
" <td>377478</td>\n",
" <td>7575.0</td>\n",
" <td>93.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hainan</th>\n",
" <td>384178</td>\n",
" <td>9084.0</td>\n",
" <td>267.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hebei</th>\n",
" <td>390878</td>\n",
" <td>16368.0</td>\n",
" <td>274.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Heilongjiang</th>\n",
" <td>397578</td>\n",
" <td>24411.0</td>\n",
" <td>623.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Henan</th>\n",
" <td>404278</td>\n",
" <td>68185.0</td>\n",
" <td>966.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hong Kong</th>\n",
" <td>410978</td>\n",
" <td>7589.0</td>\n",
" <td>130.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hubei</th>\n",
" <td>417678</td>\n",
" <td>3233890.0</td>\n",
" <td>130749.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hunan</th>\n",
" <td>424378</td>\n",
" <td>55346.0</td>\n",
" <td>178.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Inner Mongolia</th>\n",
" <td>431078</td>\n",
" <td>4021.0</td>\n",
" <td>26.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jiangsu</th>\n",
" <td>437778</td>\n",
" <td>33468.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jiangxi</th>\n",
" <td>444478</td>\n",
" <td>49861.0</td>\n",
" <td>48.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jilin</th>\n",
" <td>451178</td>\n",
" <td>4895.0</td>\n",
" <td>51.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Liaoning</th>\n",
" <td>457878</td>\n",
" <td>6920.0</td>\n",
" <td>55.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Macau</th>\n",
" <td>464578</td>\n",
" <td>773.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ningxia</th>\n",
" <td>471278</td>\n",
" <td>3857.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Qinghai</th>\n",
" <td>477978</td>\n",
" <td>1037.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shaanxi</th>\n",
" <td>484678</td>\n",
" <td>13407.0</td>\n",
" <td>67.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shandong</th>\n",
" <td>491378</td>\n",
" <td>37457.0</td>\n",
" <td>256.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shanghai</th>\n",
" <td>498078</td>\n",
" <td>19653.0</td>\n",
" <td>149.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Shanxi</th>\n",
" <td>504778</td>\n",
" <td>7272.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sichuan</th>\n",
" <td>511478</td>\n",
" <td>28454.0</td>\n",
" <td>144.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tianjin</th>\n",
" <td>518178</td>\n",
" <td>7222.0</td>\n",
" <td>145.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tibet</th>\n",
" <td>524878</td>\n",
" <td>59.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Xinjiang</th>\n",
" <td>531578</td>\n",
" <td>3903.0</td>\n",
" <td>111.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yunnan</th>\n",
" <td>538278</td>\n",
" <td>9704.0</td>\n",
" <td>77.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zhejiang</th>\n",
" <td>544978</td>\n",
" <td>67430.0</td>\n",
" <td>38.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Id ConfirmedCases Fatalities\n",
"Province_State \n",
"Anhui 330578 52597.0 281.0\n",
"Beijing 337278 23817.0 322.0\n",
"Chongqing 343978 31550.0 287.0\n",
"Fujian 350678 16558.0 38.0\n",
"Gansu 357378 5956.0 99.0\n",
"Guangdong 364078 74255.0 305.0\n",
"Guangxi 370778 13622.0 94.0\n",
"Guizhou 377478 7575.0 93.0\n",
"Hainan 384178 9084.0 267.0\n",
"Hebei 390878 16368.0 274.0\n",
"Heilongjiang 397578 24411.0 623.0\n",
"Henan 404278 68185.0 966.0\n",
"Hong Kong 410978 7589.0 130.0\n",
"Hubei 417678 3233890.0 130749.0\n",
"Hunan 424378 55346.0 178.0\n",
"Inner Mongolia 431078 4021.0 26.0\n",
"Jiangsu 437778 33468.0 0.0\n",
"Jiangxi 444478 49861.0 48.0\n",
"Jilin 451178 4895.0 51.0\n",
"Liaoning 457878 6920.0 55.0\n",
"Macau 464578 773.0 0.0\n",
"Ningxia 471278 3857.0 0.0\n",
"Qinghai 477978 1037.0 0.0\n",
"Shaanxi 484678 13407.0 67.0\n",
"Shandong 491378 37457.0 256.0\n",
"Shanghai 498078 19653.0 149.0\n",
"Shanxi 504778 7272.0 0.0\n",
"Sichuan 511478 28454.0 144.0\n",
"Tianjin 518178 7222.0 145.0\n",
"Tibet 524878 59.0 0.0\n",
"Xinjiang 531578 3903.0 111.0\n",
"Yunnan 538278 9704.0 77.0\n",
"Zhejiang 544978 67430.0 38.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[train.Country_Region == \"China\"].groupby(\"Province_State\").sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.3.1 Hubei, China"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>Id</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" <th>geo_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4154</th>\n",
" <td>6201</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-01-22</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4155</th>\n",
" <td>6202</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-01-23</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4156</th>\n",
" <td>6203</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-01-24</td>\n",
" <td>549.0</td>\n",
" <td>24.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4157</th>\n",
" <td>6204</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-01-25</td>\n",
" <td>761.0</td>\n",
" <td>40.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4158</th>\n",
" <td>6205</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-01-26</td>\n",
" <td>1058.0</td>\n",
" <td>52.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4216</th>\n",
" <td>6263</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-03-24</td>\n",
" <td>67801.0</td>\n",
" <td>3160.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4217</th>\n",
" <td>6264</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-03-25</td>\n",
" <td>67801.0</td>\n",
" <td>3163.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4218</th>\n",
" <td>6265</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-03-26</td>\n",
" <td>67801.0</td>\n",
" <td>3169.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4219</th>\n",
" <td>6266</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-03-27</td>\n",
" <td>67801.0</td>\n",
" <td>3174.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4220</th>\n",
" <td>6267</td>\n",
" <td>Hubei</td>\n",
" <td>China</td>\n",
" <td>2020-03-28</td>\n",
" <td>67801.0</td>\n",
" <td>3177.0</td>\n",
" <td>China_Hubei</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>67 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" Id Province_State Country_Region Date ConfirmedCases \\\n",
"4154 6201 Hubei China 2020-01-22 444.0 \n",
"4155 6202 Hubei China 2020-01-23 444.0 \n",
"4156 6203 Hubei China 2020-01-24 549.0 \n",
"4157 6204 Hubei China 2020-01-25 761.0 \n",
"4158 6205 Hubei China 2020-01-26 1058.0 \n",
"... ... ... ... ... ... \n",
"4216 6263 Hubei China 2020-03-24 67801.0 \n",
"4217 6264 Hubei China 2020-03-25 67801.0 \n",
"4218 6265 Hubei China 2020-03-26 67801.0 \n",
"4219 6266 Hubei China 2020-03-27 67801.0 \n",
"4220 6267 Hubei China 2020-03-28 67801.0 \n",
"\n",
" Fatalities geo_id \n",
"4154 17.0 China_Hubei \n",
"4155 17.0 China_Hubei \n",
"4156 24.0 China_Hubei \n",
"4157 40.0 China_Hubei \n",
"4158 52.0 China_Hubei \n",
"... ... ... \n",
"4216 3160.0 China_Hubei \n",
"4217 3163.0 China_Hubei \n",
"4218 3169.0 China_Hubei \n",
"4219 3174.0 China_Hubei \n",
"4220 3177.0 China_Hubei \n",
"\n",
"[67 rows x 7 columns]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_hubei = train[train['geo_id'] == \"China_Hubei\"]\n",
"train_hubei"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbfebd14cf8>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"train_hubei.plot.line(x='Date', y='ConfirmedCases', ax=ax, legend=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2 Copy Hubei, China\n",
"Idea: Scale number from Hubei, China by population and translate by date of first infection."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.1 Feature Preparation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.1 Population Data for Country_Regions\n",
"> https://www.kaggle.com/koryto/countryinfo"
]
},
{
"cell_type": "code",
"execution_count": 15,
"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>Province_State</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN\n",
"Albania_nan Albania NaN\n",
"Algeria_nan Algeria NaN\n",
"Andorra_nan Andorra NaN\n",
"Angola_nan Angola NaN\n",
"... ... ...\n",
"Uzbekistan_nan Uzbekistan NaN\n",
"Venezuela_nan Venezuela NaN\n",
"Vietnam_nan Vietnam NaN\n",
"Zambia_nan Zambia NaN\n",
"Zimbabwe_nan Zimbabwe NaN\n",
"\n",
"[294 rows x 2 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"area_features = train[['geo_id', 'Country_Region', 'Province_State']].drop_duplicates().set_index('geo_id')\n",
"area_features"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"countryinfo = pd.read_csv(\"../input/countryinfo/covid19countryinfo.csv\", thousands=',')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"region object\n",
"country object\n",
"alpha3code object\n",
"alpha2code object\n",
"pop float64\n",
"tests float64\n",
"testpop float64\n",
"density float64\n",
"medianage float64\n",
"urbanpop float64\n",
"quarantine object\n",
"schools object\n",
"publicplace object\n",
"gatheringlimit object\n",
"gathering object\n",
"nonessential object\n",
"hospibed float64\n",
"smokers float64\n",
"sex0 float64\n",
"sex14 float64\n",
"sex25 float64\n",
"sex54 float64\n",
"sex64 float64\n",
"sex65plus float64\n",
"sexratio float64\n",
"lung float64\n",
"femalelung float64\n",
"malelung float64\n",
"gdp2019 float64\n",
"healthexp float64\n",
"healthperpop float64\n",
"fertility float64\n",
"dtype: object\n"
]
},
{
"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>region</th>\n",
" <th>country</th>\n",
" <th>alpha3code</th>\n",
" <th>alpha2code</th>\n",
" <th>pop</th>\n",
" <th>tests</th>\n",
" <th>testpop</th>\n",
" <th>density</th>\n",
" <th>medianage</th>\n",
" <th>urbanpop</th>\n",
" <th>...</th>\n",
" <th>sex64</th>\n",
" <th>sex65plus</th>\n",
" <th>sexratio</th>\n",
" <th>lung</th>\n",
" <th>femalelung</th>\n",
" <th>malelung</th>\n",
" <th>gdp2019</th>\n",
" <th>healthexp</th>\n",
" <th>healthperpop</th>\n",
" <th>fertility</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>AFG</td>\n",
" <td>AF</td>\n",
" <td>38928346.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>60.0</td>\n",
" <td>18.0</td>\n",
" <td>25.0</td>\n",
" <td>...</td>\n",
" <td>0.97</td>\n",
" <td>0.85</td>\n",
" <td>1.03</td>\n",
" <td>37.62</td>\n",
" <td>36.31</td>\n",
" <td>39.33</td>\n",
" <td>18734.0</td>\n",
" <td>184.0</td>\n",
" <td>4.726633</td>\n",
" <td>5.12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>NaN</td>\n",
" <td>Albania</td>\n",
" <td>ALB</td>\n",
" <td>AL</td>\n",
" <td>2877797.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>105.0</td>\n",
" <td>36.0</td>\n",
" <td>63.0</td>\n",
" <td>...</td>\n",
" <td>0.95</td>\n",
" <td>0.87</td>\n",
" <td>0.98</td>\n",
" <td>11.67</td>\n",
" <td>7.02</td>\n",
" <td>17.04</td>\n",
" <td>15418.0</td>\n",
" <td>774.0</td>\n",
" <td>268.955733</td>\n",
" <td>1.51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NaN</td>\n",
" <td>Algeria</td>\n",
" <td>DZA</td>\n",
" <td>DZ</td>\n",
" <td>43851044.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>18.0</td>\n",
" <td>29.0</td>\n",
" <td>73.0</td>\n",
" <td>...</td>\n",
" <td>1.01</td>\n",
" <td>0.89</td>\n",
" <td>1.03</td>\n",
" <td>8.77</td>\n",
" <td>5.03</td>\n",
" <td>12.81</td>\n",
" <td>172781.0</td>\n",
" <td>1031.0</td>\n",
" <td>23.511413</td>\n",
" <td>2.70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>Andorra</td>\n",
" <td>AND</td>\n",
" <td>AD</td>\n",
" <td>77265.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>164.0</td>\n",
" <td>45.0</td>\n",
" <td>88.0</td>\n",
" <td>...</td>\n",
" <td>1.15</td>\n",
" <td>1.02</td>\n",
" <td>1.06</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>91527.0</td>\n",
" <td>5949.0</td>\n",
" <td>76994.758300</td>\n",
" <td>1.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NaN</td>\n",
" <td>Antigua and Barbuda</td>\n",
" <td>ATG</td>\n",
" <td>AG</td>\n",
" <td>97929.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>223.0</td>\n",
" <td>34.0</td>\n",
" <td>26.0</td>\n",
" <td>...</td>\n",
" <td>0.82</td>\n",
" <td>0.76</td>\n",
" <td>0.90</td>\n",
" <td>11.76</td>\n",
" <td>7.67</td>\n",
" <td>18.78</td>\n",
" <td>1688.0</td>\n",
" <td>1105.0</td>\n",
" <td>11283.685120</td>\n",
" <td>2.00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 32 columns</p>\n",
"</div>"
],
"text/plain": [
" region country alpha3code alpha2code pop tests \\\n",
"0 NaN Afghanistan AFG AF 38928346.0 NaN \n",
"1 NaN Albania ALB AL 2877797.0 NaN \n",
"2 NaN Algeria DZA DZ 43851044.0 NaN \n",
"3 NaN Andorra AND AD 77265.0 NaN \n",
"4 NaN Antigua and Barbuda ATG AG 97929.0 NaN \n",
"\n",
" testpop density medianage urbanpop ... sex64 sex65plus sexratio lung \\\n",
"0 NaN 60.0 18.0 25.0 ... 0.97 0.85 1.03 37.62 \n",
"1 NaN 105.0 36.0 63.0 ... 0.95 0.87 0.98 11.67 \n",
"2 NaN 18.0 29.0 73.0 ... 1.01 0.89 1.03 8.77 \n",
"3 NaN 164.0 45.0 88.0 ... 1.15 1.02 1.06 NaN \n",
"4 NaN 223.0 34.0 26.0 ... 0.82 0.76 0.90 11.76 \n",
"\n",
" femalelung malelung gdp2019 healthexp healthperpop fertility \n",
"0 36.31 39.33 18734.0 184.0 4.726633 5.12 \n",
"1 7.02 17.04 15418.0 774.0 268.955733 1.51 \n",
"2 5.03 12.81 172781.0 1031.0 23.511413 2.70 \n",
"3 NaN NaN 91527.0 5949.0 76994.758300 1.40 \n",
"4 7.67 18.78 1688.0 1105.0 11283.685120 2.00 \n",
"\n",
"[5 rows x 32 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pop</th>\n",
" <th>tests</th>\n",
" <th>testpop</th>\n",
" <th>density</th>\n",
" <th>medianage</th>\n",
" <th>urbanpop</th>\n",
" <th>hospibed</th>\n",
" <th>smokers</th>\n",
" <th>sex0</th>\n",
" <th>sex14</th>\n",
" <th>...</th>\n",
" <th>sex64</th>\n",
" <th>sex65plus</th>\n",
" <th>sexratio</th>\n",
" <th>lung</th>\n",
" <th>femalelung</th>\n",
" <th>malelung</th>\n",
" <th>gdp2019</th>\n",
" <th>healthexp</th>\n",
" <th>healthperpop</th>\n",
" <th>fertility</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1.870000e+02</td>\n",
" <td>52.000000</td>\n",
" <td>52.000000</td>\n",
" <td>187.000000</td>\n",
" <td>187.000000</td>\n",
" <td>187.000000</td>\n",
" <td>186.000000</td>\n",
" <td>123.000000</td>\n",
" <td>187.000000</td>\n",
" <td>187.000000</td>\n",
" <td>...</td>\n",
" <td>187.000000</td>\n",
" <td>187.000000</td>\n",
" <td>186.000000</td>\n",
" <td>164.000000</td>\n",
" <td>164.000000</td>\n",
" <td>164.000000</td>\n",
" <td>1.890000e+02</td>\n",
" <td>176.000000</td>\n",
" <td>183.000000</td>\n",
" <td>185.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>4.065431e+07</td>\n",
" <td>30192.903846</td>\n",
" <td>22281.534633</td>\n",
" <td>412.743316</td>\n",
" <td>32.084492</td>\n",
" <td>64.087166</td>\n",
" <td>3.299401</td>\n",
" <td>21.986992</td>\n",
" <td>1.051390</td>\n",
" <td>1.045989</td>\n",
" <td>...</td>\n",
" <td>0.959679</td>\n",
" <td>0.796952</td>\n",
" <td>1.007204</td>\n",
" <td>24.505549</td>\n",
" <td>18.920122</td>\n",
" <td>32.088841</td>\n",
" <td>4.617362e+05</td>\n",
" <td>1434.931818</td>\n",
" <td>2355.124042</td>\n",
" <td>2.482649</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.505850e+08</td>\n",
" <td>65479.055781</td>\n",
" <td>67986.836475</td>\n",
" <td>2083.936842</td>\n",
" <td>9.455375</td>\n",
" <td>22.164482</td>\n",
" <td>2.806039</td>\n",
" <td>9.005344</td>\n",
" <td>0.026664</td>\n",
" <td>0.030311</td>\n",
" <td>...</td>\n",
" <td>0.261363</td>\n",
" <td>0.155203</td>\n",
" <td>0.207092</td>\n",
" <td>15.475574</td>\n",
" <td>13.932863</td>\n",
" <td>19.537331</td>\n",
" <td>1.949343e+06</td>\n",
" <td>1711.726292</td>\n",
" <td>11877.522514</td>\n",
" <td>1.221939</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>8.010000e+02</td>\n",
" <td>500.000000</td>\n",
" <td>35.588092</td>\n",
" <td>0.000000</td>\n",
" <td>15.200000</td>\n",
" <td>15.000000</td>\n",
" <td>0.100000</td>\n",
" <td>3.700000</td>\n",
" <td>0.940000</td>\n",
" <td>0.970000</td>\n",
" <td>...</td>\n",
" <td>0.580000</td>\n",
" <td>0.450000</td>\n",
" <td>0.840000</td>\n",
" <td>6.290000</td>\n",
" <td>0.690000</td>\n",
" <td>9.210000</td>\n",
" <td>5.930000e+02</td>\n",
" <td>32.000000</td>\n",
" <td>0.172463</td>\n",
" <td>0.200000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1.552280e+06</td>\n",
" <td>1505.500000</td>\n",
" <td>794.582044</td>\n",
" <td>35.500000</td>\n",
" <td>24.700000</td>\n",
" <td>46.500000</td>\n",
" <td>1.300000</td>\n",
" <td>15.150000</td>\n",
" <td>1.035000</td>\n",
" <td>1.030000</td>\n",
" <td>...</td>\n",
" <td>0.870000</td>\n",
" <td>0.715000</td>\n",
" <td>0.960000</td>\n",
" <td>16.320000</td>\n",
" <td>10.902500</td>\n",
" <td>21.540000</td>\n",
" <td>1.168800e+04</td>\n",
" <td>208.250000</td>\n",
" <td>11.883978</td>\n",
" <td>1.690000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>8.278724e+06</td>\n",
" <td>5950.000000</td>\n",
" <td>2811.814632</td>\n",
" <td>94.000000</td>\n",
" <td>32.000000</td>\n",
" <td>66.000000</td>\n",
" <td>2.600000</td>\n",
" <td>22.450000</td>\n",
" <td>1.050000</td>\n",
" <td>1.050000</td>\n",
" <td>...</td>\n",
" <td>0.950000</td>\n",
" <td>0.790000</td>\n",
" <td>0.990000</td>\n",
" <td>21.295000</td>\n",
" <td>16.485000</td>\n",
" <td>26.865000</td>\n",
" <td>4.417200e+04</td>\n",
" <td>774.000000</td>\n",
" <td>89.112200</td>\n",
" <td>2.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.878637e+07</td>\n",
" <td>16121.000000</td>\n",
" <td>5943.719566</td>\n",
" <td>233.000000</td>\n",
" <td>40.000000</td>\n",
" <td>83.000000</td>\n",
" <td>4.575000</td>\n",
" <td>27.350000</td>\n",
" <td>1.060000</td>\n",
" <td>1.060000</td>\n",
" <td>...</td>\n",
" <td>0.995000</td>\n",
" <td>0.860000</td>\n",
" <td>1.010000</td>\n",
" <td>27.117500</td>\n",
" <td>23.050000</td>\n",
" <td>34.890000</td>\n",
" <td>2.469530e+05</td>\n",
" <td>1891.000000</td>\n",
" <td>465.193200</td>\n",
" <td>2.820000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.439324e+09</td>\n",
" <td>320000.000000</td>\n",
" <td>415993.107300</td>\n",
" <td>26337.000000</td>\n",
" <td>62.000000</td>\n",
" <td>100.000000</td>\n",
" <td>14.353400</td>\n",
" <td>42.650000</td>\n",
" <td>1.260000</td>\n",
" <td>1.170000</td>\n",
" <td>...</td>\n",
" <td>3.380000</td>\n",
" <td>1.710000</td>\n",
" <td>3.410000</td>\n",
" <td>114.280000</td>\n",
" <td>94.590000</td>\n",
" <td>174.880000</td>\n",
" <td>2.143945e+07</td>\n",
" <td>9536.000000</td>\n",
" <td>108308.036900</td>\n",
" <td>6.950000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" pop tests testpop density medianage \\\n",
"count 1.870000e+02 52.000000 52.000000 187.000000 187.000000 \n",
"mean 4.065431e+07 30192.903846 22281.534633 412.743316 32.084492 \n",
"std 1.505850e+08 65479.055781 67986.836475 2083.936842 9.455375 \n",
"min 8.010000e+02 500.000000 35.588092 0.000000 15.200000 \n",
"25% 1.552280e+06 1505.500000 794.582044 35.500000 24.700000 \n",
"50% 8.278724e+06 5950.000000 2811.814632 94.000000 32.000000 \n",
"75% 2.878637e+07 16121.000000 5943.719566 233.000000 40.000000 \n",
"max 1.439324e+09 320000.000000 415993.107300 26337.000000 62.000000 \n",
"\n",
" urbanpop hospibed smokers sex0 sex14 ... \\\n",
"count 187.000000 186.000000 123.000000 187.000000 187.000000 ... \n",
"mean 64.087166 3.299401 21.986992 1.051390 1.045989 ... \n",
"std 22.164482 2.806039 9.005344 0.026664 0.030311 ... \n",
"min 15.000000 0.100000 3.700000 0.940000 0.970000 ... \n",
"25% 46.500000 1.300000 15.150000 1.035000 1.030000 ... \n",
"50% 66.000000 2.600000 22.450000 1.050000 1.050000 ... \n",
"75% 83.000000 4.575000 27.350000 1.060000 1.060000 ... \n",
"max 100.000000 14.353400 42.650000 1.260000 1.170000 ... \n",
"\n",
" sex64 sex65plus sexratio lung femalelung malelung \\\n",
"count 187.000000 187.000000 186.000000 164.000000 164.000000 164.000000 \n",
"mean 0.959679 0.796952 1.007204 24.505549 18.920122 32.088841 \n",
"std 0.261363 0.155203 0.207092 15.475574 13.932863 19.537331 \n",
"min 0.580000 0.450000 0.840000 6.290000 0.690000 9.210000 \n",
"25% 0.870000 0.715000 0.960000 16.320000 10.902500 21.540000 \n",
"50% 0.950000 0.790000 0.990000 21.295000 16.485000 26.865000 \n",
"75% 0.995000 0.860000 1.010000 27.117500 23.050000 34.890000 \n",
"max 3.380000 1.710000 3.410000 114.280000 94.590000 174.880000 \n",
"\n",
" gdp2019 healthexp healthperpop fertility \n",
"count 1.890000e+02 176.000000 183.000000 185.000000 \n",
"mean 4.617362e+05 1434.931818 2355.124042 2.482649 \n",
"std 1.949343e+06 1711.726292 11877.522514 1.221939 \n",
"min 5.930000e+02 32.000000 0.172463 0.200000 \n",
"25% 1.168800e+04 208.250000 11.883978 1.690000 \n",
"50% 4.417200e+04 774.000000 89.112200 2.000000 \n",
"75% 2.469530e+05 1891.000000 465.193200 2.820000 \n",
"max 2.143945e+07 9536.000000 108308.036900 6.950000 \n",
"\n",
"[8 rows x 22 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(countryinfo.dtypes)\n",
"display(countryinfo.head(5))\n",
"display(countryinfo.describe())"
]
},
{
"cell_type": "code",
"execution_count": 18,
"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>pop_country</th>\n",
" </tr>\n",
" <tr>\n",
" <th>country</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Afghanistan</th>\n",
" <td>38928346.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania</th>\n",
" <td>2877797.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria</th>\n",
" <td>43851044.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra</th>\n",
" <td>77265.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Antigua and Barbuda</th>\n",
" <td>97929.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan</th>\n",
" <td>33469203.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela</th>\n",
" <td>28435940.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam</th>\n",
" <td>97338579.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia</th>\n",
" <td>18383955.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe</th>\n",
" <td>14862924.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>175 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" pop_country\n",
"country \n",
"Afghanistan 38928346.0\n",
"Albania 2877797.0\n",
"Algeria 43851044.0\n",
"Andorra 77265.0\n",
"Antigua and Barbuda 97929.0\n",
"... ...\n",
"Uzbekistan 33469203.0\n",
"Venezuela 28435940.0\n",
"Vietnam 97338579.0\n",
"Zambia 18383955.0\n",
"Zimbabwe 14862924.0\n",
"\n",
"[175 rows x 1 columns]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# extract population country data\n",
"pop_data = countryinfo[['country', \"pop\"]].rename(columns={'pop': 'pop_country'}).groupby(\"country\").max()\n",
"pop_data"
]
},
{
"cell_type": "code",
"execution_count": 19,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0\n",
"Albania_nan Albania NaN 2877797.0\n",
"Algeria_nan Algeria NaN 43851044.0\n",
"Andorra_nan Andorra NaN 77265.0\n",
"Angola_nan Angola NaN NaN\n",
"... ... ... ...\n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0\n",
"Venezuela_nan Venezuela NaN 28435940.0\n",
"Vietnam_nan Vietnam NaN 97338579.0\n",
"Zambia_nan Zambia NaN 18383955.0\n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0\n",
"\n",
"[294 rows x 3 columns]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# left join pop_country to area_features\n",
"area_features = area_features.join(pop_data, how='left', on=\"Country_Region\")\n",
"area_features"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of countries with population: 171\n",
"Number of countries without population: 2\n",
"Countries without population: ['Angola' 'Papua New Guinea']\n"
]
}
],
"source": [
"print(\"Number of countries with population: \", area_features[area_features['pop_country'].isna()==False].Country_Region.nunique())\n",
"print(\"Number of countries without population: \", area_features[area_features['pop_country'].isna()==True].Country_Region.nunique())\n",
"print(\"Countries without population: \", area_features[area_features['pop_country'].isna()==True].Country_Region.unique())"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# fill country population (pop_country) NA with 100 000\n",
"area_features['pop_country'] = area_features['pop_country'].fillna(100000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.2 Population Data for Province_States"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Countries with Province/State informed: ['Australia' 'Canada' 'China' 'Denmark' 'France' 'Netherlands' 'US'\n",
" 'United Kingdom']\n"
]
}
],
"source": [
"print(\"Countries with Province/State informed: \", train[train['Province_State'].isna()==False]['Country_Region'].unique())"
]
},
{
"cell_type": "code",
"execution_count": 23,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" <th>num_states</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>100000.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country num_states\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0 1\n",
"Albania_nan Albania NaN 2877797.0 1\n",
"Algeria_nan Algeria NaN 43851044.0 1\n",
"Andorra_nan Andorra NaN 77265.0 1\n",
"Angola_nan Angola NaN 100000.0 1\n",
"... ... ... ... ...\n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0 1\n",
"Venezuela_nan Venezuela NaN 28435940.0 1\n",
"Vietnam_nan Vietnam NaN 97338579.0 1\n",
"Zambia_nan Zambia NaN 18383955.0 1\n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0 1\n",
"\n",
"[294 rows x 4 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# add column num_states per country\n",
"num_states = area_features[['Country_Region', 'Province_State']].fillna(\"\").groupby('Country_Region').count().rename(columns={'Province_State': \"num_states\"})\n",
"area_features = area_features.join(num_states, on=\"Country_Region\")\n",
"area_features"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" <th>num_states</th>\n",
" <th>pop</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</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>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" <td>1</td>\n",
" <td>38928346.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" <td>1</td>\n",
" <td>2877797.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" <td>1</td>\n",
" <td>43851044.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" <td>1</td>\n",
" <td>77265.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>100000.0</td>\n",
" <td>1</td>\n",
" <td>100000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" <td>1</td>\n",
" <td>33469203.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" <td>1</td>\n",
" <td>28435940.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" <td>1</td>\n",
" <td>97338579.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" <td>1</td>\n",
" <td>18383955.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" <td>1</td>\n",
" <td>14862924.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country num_states \\\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0 1 \n",
"Albania_nan Albania NaN 2877797.0 1 \n",
"Algeria_nan Algeria NaN 43851044.0 1 \n",
"Andorra_nan Andorra NaN 77265.0 1 \n",
"Angola_nan Angola NaN 100000.0 1 \n",
"... ... ... ... ... \n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0 1 \n",
"Venezuela_nan Venezuela NaN 28435940.0 1 \n",
"Vietnam_nan Vietnam NaN 97338579.0 1 \n",
"Zambia_nan Zambia NaN 18383955.0 1 \n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0 1 \n",
"\n",
" pop \n",
"geo_id \n",
"Afghanistan_nan 38928346.0 \n",
"Albania_nan 2877797.0 \n",
"Algeria_nan 43851044.0 \n",
"Andorra_nan 77265.0 \n",
"Angola_nan 100000.0 \n",
"... ... \n",
"Uzbekistan_nan 33469203.0 \n",
"Venezuela_nan 28435940.0 \n",
"Vietnam_nan 97338579.0 \n",
"Zambia_nan 18383955.0 \n",
"Zimbabwe_nan 14862924.0 \n",
"\n",
"[294 rows x 5 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# fill province_state population (pop) with pop_country / num_states\n",
"area_features['pop'] = area_features['pop_country'] / area_features['num_states']\n",
"area_features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.3 Date of First Infection per Province_State"
]
},
{
"cell_type": "code",
"execution_count": 25,
"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>date_of_first_infection</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Afghanistan_nan</th>\n",
" <td>2020-02-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>2020-03-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>2020-02-25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>2020-03-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>2020-03-20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>2020-03-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>2020-03-14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>2020-01-23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>2020-03-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>2020-03-20</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" date_of_first_infection\n",
"geo_id \n",
"Afghanistan_nan 2020-02-24\n",
"Albania_nan 2020-03-09\n",
"Algeria_nan 2020-02-25\n",
"Andorra_nan 2020-03-02\n",
"Angola_nan 2020-03-20\n",
"... ...\n",
"Uzbekistan_nan 2020-03-15\n",
"Venezuela_nan 2020-03-14\n",
"Vietnam_nan 2020-01-23\n",
"Zambia_nan 2020-03-18\n",
"Zimbabwe_nan 2020-03-20\n",
"\n",
"[294 rows x 1 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"date_of_first_infection = train[train['ConfirmedCases'] > 0].groupby(['geo_id']).agg({'Date': 'min'}).rename(columns={'Date': 'date_of_first_infection'})\n",
"date_of_first_infection"
]
},
{
"cell_type": "code",
"execution_count": 26,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" <th>num_states</th>\n",
" <th>pop</th>\n",
" <th>date_of_first_infection</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</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>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" <td>1</td>\n",
" <td>38928346.0</td>\n",
" <td>2020-02-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" <td>1</td>\n",
" <td>2877797.0</td>\n",
" <td>2020-03-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" <td>1</td>\n",
" <td>43851044.0</td>\n",
" <td>2020-02-25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" <td>1</td>\n",
" <td>77265.0</td>\n",
" <td>2020-03-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>100000.0</td>\n",
" <td>1</td>\n",
" <td>100000.0</td>\n",
" <td>2020-03-20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" <td>1</td>\n",
" <td>33469203.0</td>\n",
" <td>2020-03-15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" <td>1</td>\n",
" <td>28435940.0</td>\n",
" <td>2020-03-14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" <td>1</td>\n",
" <td>97338579.0</td>\n",
" <td>2020-01-23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" <td>1</td>\n",
" <td>18383955.0</td>\n",
" <td>2020-03-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" <td>1</td>\n",
" <td>14862924.0</td>\n",
" <td>2020-03-20</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country num_states \\\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0 1 \n",
"Albania_nan Albania NaN 2877797.0 1 \n",
"Algeria_nan Algeria NaN 43851044.0 1 \n",
"Andorra_nan Andorra NaN 77265.0 1 \n",
"Angola_nan Angola NaN 100000.0 1 \n",
"... ... ... ... ... \n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0 1 \n",
"Venezuela_nan Venezuela NaN 28435940.0 1 \n",
"Vietnam_nan Vietnam NaN 97338579.0 1 \n",
"Zambia_nan Zambia NaN 18383955.0 1 \n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0 1 \n",
"\n",
" pop date_of_first_infection \n",
"geo_id \n",
"Afghanistan_nan 38928346.0 2020-02-24 \n",
"Albania_nan 2877797.0 2020-03-09 \n",
"Algeria_nan 43851044.0 2020-02-25 \n",
"Andorra_nan 77265.0 2020-03-02 \n",
"Angola_nan 100000.0 2020-03-20 \n",
"... ... ... \n",
"Uzbekistan_nan 33469203.0 2020-03-15 \n",
"Venezuela_nan 28435940.0 2020-03-14 \n",
"Vietnam_nan 97338579.0 2020-01-23 \n",
"Zambia_nan 18383955.0 2020-03-18 \n",
"Zimbabwe_nan 14862924.0 2020-03-20 \n",
"\n",
"[294 rows x 6 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"area_features = area_features.join(date_of_first_infection, on=\"geo_id\")\n",
"area_features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.4 Date Delta to Hubei"
]
},
{
"cell_type": "code",
"execution_count": 27,
"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>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2020-01-22</th>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-01-23</th>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-01-24</th>\n",
" <td>549.0</td>\n",
" <td>24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-01-25</th>\n",
" <td>761.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-01-26</th>\n",
" <td>1058.0</td>\n",
" <td>52.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-03-24</th>\n",
" <td>67801.0</td>\n",
" <td>3160.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-03-25</th>\n",
" <td>67801.0</td>\n",
" <td>3163.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-03-26</th>\n",
" <td>67801.0</td>\n",
" <td>3169.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-03-27</th>\n",
" <td>67801.0</td>\n",
" <td>3174.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2020-03-28</th>\n",
" <td>67801.0</td>\n",
" <td>3177.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>67 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" ConfirmedCases Fatalities\n",
"Date \n",
"2020-01-22 444.0 17.0\n",
"2020-01-23 444.0 17.0\n",
"2020-01-24 549.0 24.0\n",
"2020-01-25 761.0 40.0\n",
"2020-01-26 1058.0 52.0\n",
"... ... ...\n",
"2020-03-24 67801.0 3160.0\n",
"2020-03-25 67801.0 3163.0\n",
"2020-03-26 67801.0 3169.0\n",
"2020-03-27 67801.0 3174.0\n",
"2020-03-28 67801.0 3177.0\n",
"\n",
"[67 rows x 2 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hubei_curve = train[(train['Country_Region'] == 'China') & (train['Province_State'] == 'Hubei')]\n",
"hubei_curve = hubei_curve[['Date', 'ConfirmedCases', 'Fatalities']].set_index('Date')\n",
"hubei_curve"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fbfebc74d30>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEtCAYAAADjmaz2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8FeX1+PHPyZ4AWdiXiEEFFWQRI1CxaLXiLurXDTdq8Ue1atVW69JW69KWr/VblWqlLlRQ61oXKiilKuKCQMCw7xIhrIEsQPbknt8f8yRckhsSMLlLct6v17zuzJlnJucmN3PuzDwzI6qKMcYY4y8q1AkYY4wJP1YcjDHG1GPFwRhjTD1WHIwxxtRjxcEYY0w9VhyMMcbUY8XBGGNMPVYcjDHG1GPFwRhjTD2NFgcROVZEsv2GPSJyh4h0FJHZIrLOvaa59iIik0RkvYgsFZGhfusa59qvE5FxfvGTRGSZW2aSiEjLvF1jjDFNIYdy+wwRiQa2AMOBW4B8VZ0oIvcCaap6j4icB9wGnOfaPaWqw0WkI5AFZAIKLAJOUtUCEVkA3A58DcwEJqnqhwfLpXPnzpqRkXFo79YYY9qwRYsW7VLVLk1pG3OI6z4T2KCq34nIGOB0F58KzAHuAcYA09SrOl+LSKqI9HBtZ6tqPoCIzAbOEZE5QLKqznPxacDFwEGLQ0ZGBllZWYeYvjHGtF0i8l1T2x7qOYergNfceDdV3QbgXru6eC9gs98yuS52sHhugLgxxpgQaXJxEJE44CLgrcaaBojpYcQD5TBBRLJEJCsvL6+RNIwxxhyuQ9lzOBdYrKo73PQOd7gI97rTxXOBI/yWSwe2NhJPDxCvR1WfU9VMVc3s0qVJh82MMcYchkM55zCW/YeUAKYD44CJ7vV9v/itIvI63gnpIlXdJiKzgD/W9GoCRgP3qWq+iOwVkRHAfOB64K+H82YqKyvJzc2lrKzscBY3YSYhIYH09HRiY2NDnYoxbU6TioOIJAFnAT/zC08E3hSR8cAm4HIXn4nXU2k9UALcAOCKwCPAQtfu4ZqT08DNwEtAIt6J6IOejG5Ibm4uHTp0ICMjA+sNG9lUld27d5Obm0ufPn1CnY4xbU6TioOqlgCd6sR24/VeqttW8bq5BlrPFGBKgHgWcEJTcjmYsrIyKwythIjQqVMn7NySMaFxqF1Zw54VhtbD/paRSVWprFYqq31UVSsV1T6qfN54lU+p9imqSrUqPh/4VFH1Xr3BW4cCWnccre2uckDMjdfEa/Ko7dlSO0/3twvQ7cUemrxfqysOobZ9+3buuOMOFi5cSHx8PBkZGTz55JP069fvkNbz+eefc9NNNxEbG8uMGTO4/fbbefvtt1so6/1qrh/p3Llzs70XExkqq30UllRSWFJBfnEFBSUVFJRU1sYKSyopLK2guLyakooqSiqqKa2spqSimvLKaqp8XkGorLZNbGtgxaEZqSqXXHIJ48aN4/XXXwcgOzubHTt2HPIG9dVXX+Wuu+7ihhtuAAhYGKqqqoiJaZk/YXO+FxN8e8oq2V5UxvaiMgpLKykqrWSPG4oaGPaWVTW4vriYKNKSYklNjKNdfDRJcTF0ah9PUlw0SXHRxMdEExstxEZHucEbj4mOIi5aiImOIiZKiIkWokSIjvJeo0QQgWgRoqK8vcUoEQQQAUHcK1B3Gq/9gdM1GUvttH/bmjk17SRAT/rWvMM68H+b3taKQzP69NNPiY2N5aabbqqNDRkyBFXl7rvv5sMPP0RE+O1vf8uVV17JnDlz+P3vf0/nzp1Zvnw5J510Eq+88govvvgib775JrNmzeK///0vf/jDH7jgggtYvnw5L730EjNmzKCsrIzi4mIeeOABHnzwQbp160Z2djaXXnopAwcO5KmnnqK0tJT33nuPo48+mry8PG666SY2bdoEwJNPPsnIkSPZvXs3Y8eOJS8vj2HDhlFzO5WG3gvAvn37GDNmDAUFBVRWVvLoo48yZswYiouLueKKK8jNzaW6uprf/e53XHnllSxatIhf/vKX7Nu3j86dO/PSSy/Ro0cPJk2axOTJk4mJiaF///61Rcgcmi2FpXy4bBtfrN/FloJSthWVsa888IY+PiaK5MRYUtzQLTmBft06kJIYS2pSLB3bxZGWFEfHdnGkJsWSluRNJ8RG2WG+NqbVFoeH/r2ClVv3NOs6+/dM5sELBzQ4v2YDX9c777xDdnY2S5YsYdeuXZx88smMGjUKgG+++YYVK1bQs2dPRo4cyZdffsmNN97IF198wQUXXMBll11GTk7OAeubN28eS5cupWPHjsyZM4clS5awatUqOnbsyFFHHcWNN97IggULeOqpp/jrX//Kk08+ye23386dd97JqaeeyqZNmzj77LNZtWoVDz30EKeeeioPPPAAM2bM4LnnnjvoewGvi+m7775LcnIyu3btYsSIEVx00UV89NFH9OzZkxkzZgBQVFREZWUlt912G++//z5dunThjTfe4De/+Q1Tpkxh4sSJbNy4kfj4eAoLCw/nT9JmbdpdwofLtzFz+XaWbPZ+d327tqdP53aMPKYzPVIS6JGaSPfkBNKSvEKQnBhLQmx0iDM3kaLVFodw8sUXXzB27Fiio6Pp1q0bp512GgsXLiQ5OZlhw4aRnu5dAzhkyBBycnI49dRTD7q+s846i44dO9ZOn3zyyfTo0QOAo48+mtGjRwMwcOBAPv30UwD++9//snLlytpl9uzZw969e5k7dy7vvPMOAOeffz5paWk0RlW5//77mTt3LlFRUWzZsoUdO3YwcOBA7rrrLu655x4uuOACfvjDH7J8+XKWL1/OWWedBUB1dXVtroMGDeKaa67h4osv5uKLL27S77ItUlVyC0qZvzGfBRt3s2BjPjm7SwAYlJ7CPeccx7kndCejc7sQZ2pak1ZbHA72Db+lDBgwIOC5gYPd+TY+Pr52PDo6mqqqho/71mjX7sCNgP86oqKiaqejoqJq1+fz+Zg3bx6JiYn11hfocEFD7wW88yF5eXksWrSI2NhYMjIyKCsro1+/fixatIiZM2dy3333MXr0aC655BIGDBjAvHnz6q1nxowZzJ07l+nTp/PII4+wYsWKFjuHEilUlc35pazctofV2/ewatseluYWsa3Iu7AzNSmWkzM6ct0PMhjdvxtHdEwKccamtbKH/TSjM844g/Lycp5//vna2MKFC0lLS+ONN96gurqavLw85s6dy7Bhw4Ka2+jRo3n66adrp7OzswEYNWoUr776KgAffvghBQUFQMPv5bPPPqOoqIiuXbsSGxvLp59+ynffeTd63Lp1K0lJSVx77bXcddddLF68mGOPPZa8vLza4lBZWcmKFSvw+Xxs3ryZH/3oRzz22GMUFhayb9++oPwuwklxeRVfrNvFE7PXcs0LXzPo9/9h1J8/5aZXFvHUx+tYt2MfJx2ZxiNjBjDrjlEs/u1ZPH99JuNP7WOFwbSotv01rZmJCO+++y533HEHEydOJCEhobb75759+xg8eDAiwmOPPUb37t1ZvXp10HKbNGkSt9xyC4MGDaKqqopRo0YxefJkHnzwQcaOHcvQoUM57bTT6N27d6PvZcCAAVx44YVkZmYyZMgQjjvuOACWLVvG3XffTVRUFLGxsTz77LPExcXx9ttv84tf/IKioiKqqqq444476NevH9deey1FRUWoKnfeeSepqalB+32EyvaiMrK+y2fRdwVk5RSwctseqn1KlMDxPZIZc2JP+vdI4fgeHTi2eweS4uxf1ITGIT3sJ5xkZmZq3ec5rFq1iuOPPz5EGZmWEOl/0+1FZcxZs5N53+4mK6eALYWlACTERjE4PZVhfTqSmdGRE3unkpxg95AyLUtEFqlqZlPa2tcSY5pRRZWPbzYV8OmaPOas2cnq7XsB6NIhnpMz0vjpqX3IPDKN/j2TiY22o7omfFlxMKYRqsqsFTvYuKv4wDhKYUklWwpL2eqGnXvLUYWYKCEzI437zj2O04/tSr9u7e06ARNRrDgYcxAVVT4enL6c1xZsDjg/PiaKnqmJ9ExNYFTfLvRMTeT4Hh0YeUxnOthhIhPBrDgY04Bd+8q5+ZVFLMwp4OenH81tZ/Std2uF+Bi7cti0TlYcjAlg+ZYiJkzLIr+kgkljT+SiwT1DnZIxQWXFwRinpKKK3IJSsnIKePiDFaQlxfH2TadwQq+UUKdmTNBZcWhm0dHRDBw4sHb6vffeIyMjI2DbnJwcvvrqK66++uqDrjMnJ6f2xntZWVlMmzaNSZMmMWfOHOLi4jjllFMAmDx5MklJSVx//fXN9n5ao2qfsnr7HrJyClj0XQHf7S4mt6CU3cUVtW0yj0zj2WtPokuH+IOsyZjWy4pDM0tMTKy9+rgxOTk5/POf/2y0OPjLzMwkM9Prpjxnzhzat29fWxz876Bq9isormDZliKW5haS9V0Bi3IK2OvuWto9OYG+3dozumcK6WmJHNExifS0RAb1SiHGupqaNsyKQxDk5ORw3XXXUVzsdYV8+umnOeWUU7j33ntZtWoVQ4YMYdy4cVxyySUB2/mbM2cOjz/+OE8//TSTJ08mOjqaV155hb/+9a98/PHHtG/fnrvuuosNGzZwyy23kJeXR1JSEs8//zzHHXccb731Fg899BDR0dGkpKQwd+7coP8+WlpZZTUvz/uORd8VsGxLUe2FZ+DdufTCIT05OSONkzM60is10U4oGxNA6y0OH94L25c17zq7D4RzJx60SWlpae1zD/r06cO7775L165dmT17NgkJCaxbt46xY8eSlZXFxIkTefzxx/nggw8AKCkpCdgukIyMDG666abaYgDw8ccf186fMGECkydPpm/fvsyfP5+f//znfPLJJzz88MPMmjWLXr16tcrbZJdWVDPh5Sw+X7eLIzslMaR3Ktf/4EgG9kphQK8UUhKte6kxTdGk4iAiqcALwAl4j1n9KbAGeAPIAHKAK1S1QLyvYU8B5wElwE9UdbFbzzjgt261j6rqVBc/CXgJSARmArdrhN7XI9BhpcrKSm699Vays7OJjo5m7dq1AZdtarvG7Nu3j6+++orLL7+8NlZeXg7AyJEj+clPfsIVV1zBpZdeeljrD1clFVWMfymLrzfu5rHLBnFF5hGhTsmYiNXUPYengI9U9TIRiQOSgPuBj1V1oojcC9wL3AOcC/R1w3DgWWC4iHQEHgQy8QrMIhGZrqoFrs0E4Gu84nAO8OH3emeNfMMPpieeeIJu3bqxZMkSfD4fCQkJ36tdY3w+H6mpqQHPfUyePJn58+czY8YMhgwZQnZ2Np06dTqsnxNO9pZV8tOXFrLouwKeuGIIF5/YK9QpGRPRGj3jJiLJwCjgRQBVrVDVQmAMMNU1mwrUPK1lDDBNPV8DqSLSAzgbmK2q+a4gzAbOcfOSVXWe21uY5reuVqGoqIgePXoQFRXFyy+/THV1NQAdOnRg7969jbZrSN3layQnJ9OnTx/eeustwLv9w5IlSwDYsGEDw4cP5+GHH6Zz585s3hz4yt9IUlRayXUvLuCbTYX8dexQKwzGNIOmdMc4CsgD/iEi34jICyLSDuimqtsA3GtX174X4L/FyXWxg8VzA8RbjZ///OdMnTqVESNGsHbt2tqH9QwaNIiYmBgGDx7ME0880WC7hlx44YW8++67DBkyhM8///yAea+++iovvvgigwcPZsCAAbz//vsA3H333QwcOJATTjiBUaNGMXjw4JZ500FSWFLBNS98zYqtRfztmqGcP6hHqFMyplVo9JbdIpKJd7hnpKrOF5GngD3Abaqa6teuQFXTRGQG8CdV/cLFPwZ+DZwBxKvqoy7+O7xzEnNd+x+7+A+BX6vqhQFymYB3+InevXufVPOQmRqRfntnU9/B/qZ7yiq59oX5rN62l79fdxI/Oq5rwHbGGM+h3LK7KXsOuUCuqs53028DQ4Ed7pAQ7nWnX3v/M4HpwNZG4ukB4vWo6nOqmqmqmV26dGlC6qa1Kqmo4qf/WMjKrXv42zVDrTAY08waLQ6quh3YLCLHutCZwEpgOjDOxcYB77vx6cD14hkBFLnDTrOA0SKSJiJpwGhglpu3V0RGuJ5O1/uty5h6yiqruXFqFos3FTBp7In8uH+3UKdkTKvT1N5KtwGvup5K3wI34BWWN0VkPLAJqOk3OROvG+t6vMNGNwCoar6IPAIsdO0eVtV8N34z+7uyfsj37alkWq3yqmpuemUR877dzV+uGMx5A+0cgzEtoUnFQVWz8bqg1nVmgLYK3NLAeqYAUwLEs/CuofjeVNWueG0l6p4Pq6r28YvXvmHOmjz+dOlALjkxvYEljTHfV6u6eUxCQgK7d++ut1ExkUdV2b17d+21HqrKve8sY9aKHfz+wv6MHdY7xBka07q1qttnpKenk5ubS15eXqhTMc0gISGB9HRv7+DPs9bw9qJc7vhxX34ysk+IMzOm9WtVxSE2NpY+fWzD0dq89OVG/jZnA1cP783tZ/YNdTrGtAmt6rCSaX1mLN3GQx+sZHT/bjwy5gQ7n2RMkFhxMGHrqw27uPONbDKPTGPS2BOJjrLCYEywWHEwYWnl1j38bNoiMjon8cL1J5MQGx3qlIxpU6w4mLCzIW8f10+ZT/uEGF66YRgpSfYMBmOCzYqDCSu5BSVc+4J3p5ZXbxxOz9TEEGdkTNtkxcGEjZ17y7j2hfkUl1cx7afDOapL+1CnZEyb1aq6sprIVVhSwXUvLGDn3nJeHj+c/j2TQ52SMW2a7TmYkNtXXsW4fyxk465inr8+k5OOTAt1Ssa0eVYcTMhNnrOBZbmFPHPNUEYe0znU6RhjsOJgwsAnq3dyckZHzrJbbxsTNqw4mJDauaeMldv2cNqx9vAmY8KJFQcTUnPX7QLgtH5WHIwJJ1YcTEh9tjaPLh3i6d/DeicZE06sOJiQqfYpn6/LY1TfLnZDPWPCjBUHEzJLcwspLKm08w3GhCErDiZkPlubhwj80LqvGhN2rDiYkJm7No9B6amktYsLdSrGmDqaVBxEJEdElolItohkuVhHEZktIuvca5qLi4hMEpH1IrJURIb6rWeca79ORMb5xU9y61/vlrUD0K1cYUkF2ZsLrZeSMWHqUPYcfqSqQ1Q1003fC3ysqn2Bj900wLlAXzdMAJ4Fr5gADwLDgWHAgzUFxbWZ4LfcOYf9jkxE+GL9LnxqXViNCVff57DSGGCqG58KXOwXn6aer4FUEekBnA3MVtV8VS0AZgPnuHnJqjpPVRWY5rcu00p9tiaPlMRYBqenhDoVY0wATS0OCvxHRBaJyAQX66aq2wDca1cX7wVs9ls218UOFs8NEDetlKry2do8Tu3bmZhoO+1lTDhq6i27R6rqVhHpCswWkdUHaRvofIEeRrz+ir3CNAGgd+/eB8/YhK3V2/eyc285p/W1Q0rGhKsmfW1T1a3udSfwLt45gx3ukBDudadrngsc4bd4OrC1kXh6gHigPJ5T1UxVzezSxTYskeqztXkAjLLzDcaErUaLg4i0E5EONePAaGA5MB2o6XE0DnjfjU8Hrne9lkYARe6w0yxgtIikuRPRo4FZbt5eERnheild77cu0wrNXZvHcd070D0lIdSpGGMa0JTDSt2Ad13v0hjgn6r6kYgsBN4UkfHAJuBy134mcB6wHigBbgBQ1XwReQRY6No9rKr5bvxm4CUgEfjQDaYVKi6vYmFOPj8d2SfUqRhjDqLR4qCq3wKDA8R3A2cGiCtwSwPrmgJMCRDPAk5oQr4mws3bsJvKarUurMaEOesqYoLqqw27SYiN4qQMexSoMeHMioMJqk35JRzZsR3xMdGhTsUYcxBWHExQbS0spWeqnYg2JtxZcTBBtbWolJ6piaFOwxjTCCsOJmiKy6soLKmkV5oVB2PCnRUHEzTbikoB6GV7DsaEPSsOJmi2FJYB2GElYyKAFQcTNFsLvT0HKw7GhD8rDiZothaWEiXQrUN8qFMxxjTCioMJmi2FpXRPTrDbdBsTAey/1ASNd42DHVIyJhJYcTBBs7WwzIqDMRHCioMJCp9P2WYXwBkTMaw4mKDYta+cymqll906w5iIYMXBBMUW68ZqTESx4mCCYqtdAGdMRLHiYILCLoAzJrJYcTBBsaWwlPbxMSQnNOXJtMaYULPiYIKi5jkO7lnkxpgwZ8XBBIU9x8GYyGLFwQSFXQBnTGRpcnEQkWgR+UZEPnDTfURkvoisE5E3RCTOxePd9Ho3P8NvHfe5+BoROdsvfo6LrReRe5vv7ZlwUFpRTX5xhT3HwZgIcih7DrcDq/ym/xd4QlX7AgXAeBcfDxSo6jHAE64dItIfuAoYAJwD/M0VnGjgGeBcoD8w1rU1rcTWopqeSnYBnDGRoknFQUTSgfOBF9y0AGcAb7smU4GL3fgYN42bf6ZrPwZ4XVXLVXUjsB4Y5ob1qvqtqlYAr7u2ppWo7caaYnsOxkSKpu45PAn8GvC56U5AoapWuelcoJcb7wVsBnDzi1z72nidZRqKm1bCrnEwJvI0WhxE5AJgp6ou8g8HaKqNzDvUeKBcJohIlohk5eXlHSRrE062FJYhAt1T7LCSMZGiKXsOI4GLRCQH75DPGXh7EqkiUnNFUzqw1Y3nAkcAuPkpQL5/vM4yDcXrUdXnVDVTVTO7dOnShNRNONhaWEq3DgnE2kN+jIkYjf63qup9qpquqhl4J5Q/UdVrgE+By1yzccD7bny6m8bN/0RV1cWvcr2Z+gB9gQXAQqCv6/0U537G9GZ5dyYs1FwAZ4yJHN/nXgb3AK+LyKPAN8CLLv4i8LKIrMfbY7gKQFVXiMibwEqgCrhFVasBRORWYBYQDUxR1RXfIy8TZrYWlnJCr5RQp2GMOQSHVBxUdQ4wx41/i9fTqG6bMuDyBpb/A/CHAPGZwMxDycVEBp9P2VpUxtkDuoc6FWPMIbCDwKZF7S6uoKLKZz2VjIkwVhxMi7JurMZEJisOpkXtLw52QtqYSGLFwbSomseD2n2VjIksVhxMi9paWEZSXDQpibGhTsUYcwisOJgW5V3jkGgP+TEmwlhxMC3KHvJjTGSy4mBa1NbCUnrZyWhjIo4VB9Niyiqr2bWvwm7VbUwEsuJgWsy2ojLArnEwJhJZcTAtxi6AMyZyWXEwLcaucTAmcllxMC1ma2EpItAtJT7UqRhjDtH3uWW3MQBUVPl44P3lfLb2wKfzFZVW0rl9PPEx0SHKzBhzuKw4mO+ltKKam19dxJw1eZw/sAft4g8sBMP6dApRZsaY78OKgzlse8sqGT81i4U5+fzxkoFcPbx3qFMyxjQTKw7msOQXV/CTfyxg5dY9PHnlEMYM6RXqlIwxzciKgzlkO/aUce0L8/kuv4S/X3cSZx7fLdQpGWOamRUHc0iKSisZ+/zX7Cgq46UbTuaUozuHOiVjTAuw4mCarKrax63/XMzm/BJeHj+cEUfZyWZjWqtGr3MQkQQRWSAiS0RkhYg85OJ9RGS+iKwTkTdEJM7F4930ejc/w29d97n4GhE52y9+joutF5F7m/9tmubwh5mr+HzdLh69+AQrDMa0ck25CK4cOENVBwNDgHNEZATwv8ATqtoXKADGu/bjgQJVPQZ4wrVDRPoDVwEDgHOAv4lItIhEA88A5wL9gbGurQkjry3YxD++zOGnI/tw5cnWK8mY1q7R4qCefW4y1g0KnAG87eJTgYvd+Bg3jZt/pnhPehkDvK6q5aq6EVgPDHPDelX9VlUrgNddWxMmvv52N797bzmj+nXh/vOOC3U6xpggaNLtM9w3/GxgJzAb2AAUqmqVa5IL1PRl7AVsBnDzi4BO/vE6yzQUN2Fg0+4Sbn5lEUd2SuLpq08kJtruuGJMW9Ck/3RVrVbVIUA63jf94wM1c6+BngephxGvR0QmiEiWiGTl5eUFamKaUVllNRNezsKn8MK4k0lOsOdAG9NWHNLXQFUtBOYAI4BUEanp7ZQObHXjucARAG5+CpDvH6+zTEPxQD//OVXNVNXMLl26HErq5jA8MXstq7fv5ckrh9Cnc7tQp2OMCaKm9FbqIiKpbjwR+DGwCvgUuMw1Gwe878anu2nc/E9UVV38KtebqQ/QF1gALAT6ut5PcXgnrac3x5szh2/Bxnye+/xbrh7emx8d1zXU6Rhjgqwp1zn0AKa6XkVRwJuq+oGIrAReF5FHgW+AF137F4GXRWQ93h7DVQCqukJE3gRWAlXALapaDSAitwKzgGhgiqquaLZ3aA7ZvvIqfvVWNkekJfGb8wIdQTTGtHbifamPPJmZmZqVlRXqNFql+95ZyusLN/PWz35AZkbHUKdjjGkmIrJIVTOb0ta6npgDfLJ6B68t2MzPRh1thcGYNsyKg6mVX1zBr99exnHdO3DnWX1DnY4xJoTs3koGAFXlt+8to6i0gmk/HWZPbzOmjbM9BwPAC59vZOay7fzyrGPp3zM51OkYY0LMioPhs7V5/OnDVZw3sDs3nXZUqNMxxoQBKw5tXM6uYm7752L6devAny8bjHcbLGNMW2fFoQ3bV17F/5uWRVSU8Pz1mbSLt1NQxhiPbQ3aKJ9PufONbL7dVczLPx3GER2TQp2SMSaM2J5DG/XUx+uYvXIHvz3/eE45xh71aYw5kBWHNuibTQVM+mQd/zM0nZ+ckhHqdIwxYciKQxtTVe3jN+8up2uHeB4aM8BOQBtjArLi0MZMm/cdK7ft4YELBtDeTkAbYxpgxaEN2bGnjL/MXsuofl04b2D3UKdjjAljVhzakEc+WElFtY+HL7LDScaYg7Pi0EZ8vi6PD5Zu45bTjyHDnupmjGmEFYc2oKyymt+9t5yMTkn8zG6PYYxpAjsj2Qb8/bNvydldwsvjh5EQa3dbNcY0zvYcWrl1O/byzJz1XDCoBz/s2yXU6RhjIoQVh1asvKqaX7yeTYf4GB64sH+o0zHGRBA7rNSK/fmjNazatocXx2XStUNCqNMxxkSQRvccROQIEflURFaJyAoRud3FO4rIbBFZ517TXFxEZJKIrBeRpSIy1G9d41z7dSIyzi9+kogsc8tMEutn+b19vi6PF77YyHUjjuTM47uFOh1jTIRpymGlKuBXqno8MAK4RUT6A/fSoHJvAAAXxklEQVQCH6tqX+BjNw1wLtDXDROAZ8ErJsCDwHBgGPBgTUFxbSb4LXfO939rbVd+cQW/enMJx3Rtz/3nHR/qdIwxEajR4qCq21R1sRvfC6wCegFjgKmu2VTgYjc+Bpimnq+BVBHpAZwNzFbVfFUtAGYD57h5yao6T1UVmOa3LnOIVJV7/rWUgpIKnrpqCIlx1jvJGHPoDumEtIhkACcC84FuqroNvAICdHXNegGb/RbLdbGDxXMDxM1heH3hZmav3MGvzz6OAT1TQp2OMSZCNbk4iEh74F/AHaq652BNA8T0MOKBcpggIlkikpWXl9dYym3O5vwSHv73SkYe04nxp/YJdTrGmAjWpOIgIrF4heFVVX3HhXe4Q0K4150ungsc4bd4OrC1kXh6gHg9qvqcqmaqamaXLtZnv64/zFgFwJ8vG0xUlJ3TN8Ycvqb0VhLgRWCVqv7Fb9Z0oKbH0Tjgfb/49a7X0gigyB12mgWMFpE0dyJ6NDDLzdsrIiPcz7reb12mib5av4uPVmznlh8dTc/UxFCnY4yJcE25zmEkcB2wTESyXex+YCLwpoiMBzYBl7t5M4HzgPVACXADgKrmi8gjwELX7mFVzXfjNwMvAYnAh24wTVRV7eOhf6/kiI6J3PhDu3eSMeb7a7Q4qOoXBD4vAHBmgPYK3NLAuqYAUwLEs4ATGsvFBPbq/E2s2bGXydeeZPdOMsY0C7t9RoQrKK7gL7PXMvKYTpw9wC52M8Y0DysOEe7/Zq9hX3kVD15oD/AxxjQfKw4RbOXWPfxz/iauG3Ek/bp1CHU6xphWxIpDhFJVfv/vFaQkxnLnj/uFOh1jTCtjxSFCfbR8Ows25nPX2ceSkhQb6nSMMa2MFYcIVFHl438/Wk2/bu256uTeoU7HGNMKWXGIQP+c/x05u0u479zjibYroY0xLcCKQ4TZU1bJUx+v45SjO3H6sXYLEWNMy7DiEGGenbOBgpJK7j/veOu6aoxpMVYcIsjWwlKmfLGRS07sxQm97HbcxpiWY8Uhgjz+nzUo8KvR1nXVGNOyrDhEiBVbi3j3my3cMDKD9LSkUKdjjGnlrDhEAFXlTzNXk5oYy89PPybU6Rhj2gArDhHgo+Xb+WL9Lm47oy8piXbBmzGm5VlxCHOb80u4519LGZSewrUjjgx1OsaYNsKKQxirrPZx22vfoApPjx1KXIz9uYwxwdGUJ8GZEHl81hqyNxfyzNVD6d3JTkIbY4LHvoqGqU9X7+Tvc7/l2hG9OX9Qj1CnY4xpY6w4hKFtRaX88s1sjuvegd+e3z/U6Rhj2iArDmGmqtrH7a9lU17l45lrhtozoY0xIdFocRCRKSKyU0SW+8U6ishsEVnnXtNcXERkkoisF5GlIjLUb5lxrv06ERnnFz9JRJa5ZSZJG79h0OsLN7MgJ59HLz6Bo7u0D3U6xpg2qil7Di8B59SJ3Qt8rKp9gY/dNMC5QF83TACeBa+YAA8Cw4FhwIM1BcW1meC3XN2f1Wb4fMqULzcyOD2FS07sFep0jDFtWKPFQVXnAvl1wmOAqW58KnCxX3yaer4GUkWkB3A2MFtV81W1AJgNnOPmJavqPFVVYJrfutqcz9fv4tu8Ym4Y2cfuuGqMCanDPefQTVW3AbjXri7eC9js1y7XxQ4Wzw0Qb5P+8eVGunSI57yB1jvJGBNazX1COtDXXT2MeOCVi0wQkSwRycrLyzvMFMPThrx9zFmTx7XDj7SL3YwxIXe4W6Ed7pAQ7nWni+cCR/i1Swe2NhJPDxAPSFWfU9VMVc3s0qV1PQVt2lc5xEVHcfVweya0MSb0Drc4TAdqehyNA973i1/vei2NAIrcYadZwGgRSXMnokcDs9y8vSIywvVSut5vXW3GnrJK3l6UywWDe9ClQ3yo0zHGmMZvnyEirwGnA51FJBev19FE4E0RGQ9sAi53zWcC5wHrgRLgBgBVzReRR4CFrt3DqlpzkvtmvB5RicCHbmhT3srKpbiimhtO6RPqVIwxBmhCcVDVsQ3MOjNAWwVuaWA9U4ApAeJZwAmN5dFaVfuUqV/lkHlkGgPT7dGfxpjwYGc+Q+yT1TvZlF/CDSNtr8EYEz6sOITYS19tpEdKAqMHdAt1KsYYU8uKQwit3LqHL9fv5rofHElstP0pjDHhw7ZIIfLl+l1c++J8khNiGHuydV81xoQXKw5B5vMpz3y6nutenE+ndnG8e8tI0trFhTotY4w5gD0JLoiKSir51VvZ/HfVTi4a3JM/XTqQdvH2JzDGhB/bMgXJgo353PXWErYVlfLQRQO4/gdH2s31jDFhy4pDC1uWW8Tj/1nDZ2vz6JmSwOsTfsBJR6Y1vqAxxoSQFYcWsnbHXv7yn7V8tGI7qUmx3H/ecVw3IoPEOHuymzEm/FlxaGYVVT7+OHMVU+fl0C4uhjt+3Jfxp/ahQ0JsqFMzxpgms+LQjLYWlvLzVxeTvbmQ639wJHf+uJ/1RDLGRCQrDs3ky/W7uO21byivrOZv1wy1B/YYYyKaFYfvyedTnv1sA//3nzUc3aU9k687iaO7tA91WsYY871YcWiiap/yqzezmb1yxwFxn0JpZTUXDu7JRLtuwRjTStiWrIn+PGsN72Vv5ZITe9GpznmE/j2TueTEXnbdgmkdfNXgq4LqSu+17lBdN1YdoJ2LabU3rtXg83mv6nMxnxtcm9p2VX7zANSNqxuveZKwG69t69vfTn0HLtdoG1/9trXr1wOna5apUTefeq/U//mBBPw5fuvGf9SvTW0OAX43dZc9BFYcmuD97C1M/mwDVw/vzR8vGRjqdEwk8fmgqqzOUOG9+m98azaK1VVQXeGGSr9xN1TVjJe7jXTl/vXUtq9082vG/X5OdaVbpmbZivrrOcyNSXC5L2IiINEgUX6D7H/Fb/yAdm5elN9yiF87qRMTv3G/eKB8CNBeoiAquoFl/VcTVX/5A9bt9/OkbjxQ+7ptFjf5N2zFoRFLcwv59dtLGZbRkd9fOCDU6ZhgKt8HRbnesCcXqsoPnK8KFXuheBcU57lhF5TtgcoSqCyFqtLmz0uiIToWouMgKsYbj4qF6BiIjvfiNfOjYyE20ZsfFeO1iYp1y8Tsb+O/ntp2Mfuno9zPrPnZUTF+Q3Sd6ZpYtNf+gFe/jaT/xjoqxttQR8XU34jX20ibw/ePJre04nAQO/eWMWHaIjq3j+dv1w4lLsbuUxj2KkuhZDeU5ENZUYChEEoL94+XFXmHM/ypz9vQlxU27WfGp0C7TtCuC3Q8CuKTIS7J2yjHtvNeYxIgJt7v1W3E625YJRpi4txGO+7ADb3/Msa0MCsODSivquamlxdRVFrJ2zf/gM7t40OdUttQVeE27ruhNN/7Fl6+F8r3eEPZHqjY52JuKNvjtS3Jb/ybenwyJKRCYor32vEob6NcV7vOkJIOKUd4r8m9IK5d/XZx7byNtjGtjBUHP8XlVSzfUsSS3EI+XrWTxZsKeebqoQzoac92/t4qiiF/I+R/C3u2HHgYpua1ZLdXAA4mOh4SkiGuPcR38IaUXtB9ICR1dEMnSOwIiamQkLJ/iE+2b93GNFHYFAcROQd4CogGXlDViS31s1SV7XvKWLN9L+t27GPNjr0s31LE2h178blzcb1SE/ndBf05f1AbvZjN5/O+oVfsc9/e3bf2cnd4xv+be81QXVF/PaWFULAR9h3YBZioGEjq7H1Db9cZUo/0XpM6uQ18Z0hMcxv2ZG/DHp/sHXIxxrS4sCgOIhINPAOcBeQCC0VkuqquPNR1+XxKcUUVe8qq2FNayfaiMnILSsgtLGVLQSm5BaVsyNvH3rKq2mW6dIinf49kzh7QncFHpDAoPTUyDiOpej1Mak5+VpYcOF5Rsj9WUeI29sX7h0q/8Zp55e6QTWVxExIQt9F23+ADbbjjOkDfs7zDNx2PgrQ+kNrb2/DbyUVjwlZYFAdgGLBeVb8FEJHXgTFAg8Vh9fa9jJz4Se20T5Xi8ir2llft797rJzZa6JmaSK/URMYM6cmx3TrQzw3Ndv+jmo21z69LYVV5ne6F/jHXpfGAb+ZuqCyFyjLvGHplmbeBr3KvlWX7C4BWN56XP4mG+PbeidL49t4x89h20L67dxI1voO3QY/v4Oa3d9/c/b7B17zGtbMNvDGtVLgUh17AZr/pXGD4wRboLXk8FT+5dlpQYpO8IhAbLcRGea8JMZAUG0V8NEjNBSjFPtjgg/V1LoCpe/FOzYa8qtzbsFdVBN4Y+6q9guCrqj/vUMW5jXJsTW8X19OlfVc3nnhgPC5pf4+YuHZ+sZrl3WucKwTRcbZBN8Y0KlyKQ6CtVb3v/yIyAZgAMKRnHJmyuv5qqgV8dS9AqdNvOiqa/RfH+F0gExXjbVxr+mVHx+7vfljTlTBQzxaR/d0O/fuON9gdMdY7sRoT5607vsP+wzN2wtQYEwbCpTjkAkf4TacDW+s2UtXngOcAMjMzlTuygpOdMca0MeFyVddCoK+I9BGROOAqYHqIczLGmDYrLPYcVLVKRG4FZuF1ZZ2iqitCnJYxxrRZYVEcAFR1JjAz1HkYY4wJn8NKxhhjwogVB2OMMfVYcTDGGFOPFQdjjDH1WHEwxhhTj2igGxFFABEpBep2d00BiiIs1hvYdJjLBivHSIyFWz7h9FkKZY7hFAu3fIIRG6CqiTSFqkbkAOQFiD0XgbHDfh9h+F7CJhZu+YTTZykM87bPSAg/Iw0NkXxYKdAzHP8dgbHv8z5aIp/WEgu3fMLpsxSsfMI9Fm75hOozElAkH1bKUtXMUOfxfbWW92FCzz5LpjGH8hmJ5D2H50KdQDNpLe/DhJ59lkxjmvwZidg9B2OMMS0nkvccmo2IHCEin4rIKhFZISK3u/gbIpLthhwRyQ5iTueIyBoRWS8i97rYiyKyRESWisjbItI+SLlMEZGdIrLcL9ZRRGaLyDr3mhbCXELyd2roc+M3/y4RURHpHIx83M8M9Ll51cWWu99fbAhzOUNEFrtcpopIUO7vFuhz4+K3uRxXiMhjQcqloe3NI+5/O1tE/iMiPYORT4Oaeua6NQ9AD2CoG+8ArAX612nzf8ADQconGtgAHAXEAUuA/kCyX5u/APcGKZ9RwFBguV/ssZqfD9wL/G+ocgnh36nBzw3e80lmAd8BnUP8uTkP74FaArwG3BzCXDYD/Vybh4HxofrcAD8C/gvEu+muofzc1Pn//gUwORj5NDTYngOgqttUdbEb3wuswnt0KQAiIsAVeP9YwVD7TG1VrQBeB8ao6h6/fBIJ8LS8lqCqc4H8OuExwFQ3PhW4OIS5AMH/OzXyuXkC+DVB+hs5DX1uZqoDLMB7mFYocvkfoFxV17o2s12sxTXwubkZmKiq5a7NziDlEvBzU/P/7bQjuJ+deqw41CEiGcCJwHy/8A+BHaq6LkhpBHqmdi+X3z+A7cBxwF+DlE8g3VR1G3gfdqBrCHOpEey/Uy3/z42IXARsUdUlQU6jwc8NgDucdB3wUYhy6Q7EikhNb5nLOPAJkMHWD/ihiMwXkc9E5ORgJ1B3eyMifxCRzcA1wAPBzsefFQc/7hj+v4A76lTxsQRvrwEO8kxtVb0B6In3bePKIOYUCYL9dwIO/NwAVcBvCM0/dmPPYv8bMFdVPw9RLj68pzw+ISILgL14v69QiQHSgBHA3cCbbu8zKAJtb1T1N6p6BPAqcGuwcgnEioPjvlX9C3hVVd/xi8cAlwJvBDGdgz5TW1WrXT5B2SVvwA4R6QHgXoOyS96QEP2dAn1ujgb6AEtEJAfvb7dYRLoHIZ0GPzci8iDQBfhlEPJoMBdVnaeqP1TVYcBcIOh7eX5ygXfcEbcFeMUrKJ0HGtre+Pknof3/tuIAtceqXwRWqepf6sz+MbBaVXODmFLAZ2qLyDF++V4IrA5iTnVNB8a58XHA+yHMBULwdwr0uVHVZaraVVUzVDUDbwM0VFW3ByGlhj43NwJnA2NV1ReEPA6WS1cAEYkH7gEmBymfQN4DznD59MM7cb6rpX9oQ9sbEenr1+wiQvv/bb2VvHN0nIq3+70UyHbDeW7eS8BNIcjpPLxeDBvwDlNEAV8Cy4DleLudyUHK5TVgG1CJt7EbD3QCPsb75vcx0DFUuYTq73Swz41fmxyC1Fsp0OfGxarcdE2OwerNFSiXP+MdEl2DdzglWL+XQJ/hOOAV9/+0GDgjlJ8bvD2J5S7+b7yT1EH7PNcd7CI4Y4wx9dhhJWOMMfVYcTDGGFOPFQdjjDH1WHEwxhhTjxUHY4wx9VhxMMYYU48VB2OMMfVYcTDGGFOPFQdjjDH1WHEwxhhTjxUHY4wx9VhxMMYYU48VB2OMMfVYcTDGGFOPFQdjjDH1WHFoYSJSLSLZfkPGQdqeLiIfBC87E0lEREXkZb/pGBHJs8+MaQkxoU6gDShV1SGhTsK0CsXACSKSqKqlwFnAlkNZgYjEqGpVi2RnWhXbcwgBEYkWkT+LyEIRWSoiP/ObnSwi74rIShGZLCL2NzL+PgTOd+Nj8R5/CYCIDBORr0TkG/d6rIv/RETeEpF/A/8JfsomEtmGp+Ul+h1SetfFxgNFqnoycDLw/0Skj5s3DPgVMBA4Grg06BmbcPY6cJWIJACDgPl+81YDo1T1ROAB4I9+834AjFPVM4KWqYlodlip5QU6rDQaGCQil7npFKAvUAEsUNVvAUTkNbyHkb8drGRNeFPVpe681VhgZp3ZKcBUEemL9wD7WL95s1U1PyhJmlbBikNoCHCbqs46IChyOt4/tb+608ZMBx4HTgc6+cUfAT5V1UtcAZnjN684SLmZVsIOK4XGLOBmEYkFEJF+ItLOzRsmIn3cuYYrgS9ClaQJW1OAh1V1WZ14CvtPUP8kqBmZVseKQ2i8AKwEFovIcuDv7N+LmwdMBJYDG4F3A67BtFmqmquqTwWY9RjwJxH5EogOclqmlRFVO2phjDHmQLbnYIwxph4rDsYYY+qx4mCMMaYeKw7NTESOEJFPRWSViKwQkdtdvKOIzBaRde41zcWvcVdJL3VXtQ72W9c5IrJGRNaLyL2hek/GmLbHTkg3MxHpAfRQ1cUi0gFYBFyM17UwX1Unug19mqreIyKnAKtUtUBEzgV+r6rDRSQaWIt3/5xcYCEwVlVXhuJ9GWPaFttzaGaquk1VF7vxvcAqoBcwBpjqmk3FKxio6leqWuDiXwPpbnwYsF5Vv1XVCrzbJowJzrswxrR1VhxakLtK9US8+990U9Vt4BUQoGuARcbj3VgNvIKy2W9erosZY0yLs9tntBARaQ/8C7hDVfeISGPtf4RXHE6tCQVoZscAjTFBYXsOLcDdFuNfwKuq+o4L73DnI2rOS+z0az8I76rpMaq624VzgSP8VpsObG3p3I0xBqw4NDvxdhFexDvJ/Be/WdOBcW58HPC+a98beAe4TlXX+rVfCPR191mKA65y6zDGmBZnvZWamYicCnwOLAN8Lnw/3nmHN4HewCbgclXNF5EXgP8BvnNtq1Q1063rPOBJvPvkTFHVPwTtjRhj2jQrDsYYY+qxw0rGGGPqseJgjDGmHisOxhhj6rHiYIwxph4rDsYYY+qx4mBME4hItYhkuzvtLhGRX7rnfB9smQwRuTpYORrTnKw4GNM0pao6RFUH4N0p9zzgwUaWyQCsOJiIZNc5GNMEIrJPVdv7TR+FdxV7Z+BI4GWgnZt9q6p+JSJfA8cDG/HuxDsJmAicDsQDz6jq34P2Jow5BFYcjGmCusXBxQqA44C9gE9Vy0SkL/CaqmaKyOnAXap6gWs/Aeiqqo+KSDzwJd6V8huD+maMaQK7K6sxh6/mzrmxwNMiMgSoBvo10H40MEhELnPTKUBfvD0LY8KKFQdjDoM7rFSNd3fdB4EdwGC883hlDS0G3Kaqs4KSpDHfg52QNuYQiUgXYDLwtHrHZVOAbarqA67Du1EieIebOvgtOgu42d3SHRHpJyLtMCYM2Z6DMU2TKCLZeIeQqvBOQNfckv1vwL9E5HLgU6DYxZcCVSKyBHgJeAqvB9Nid2v3PNzjYo0JN3ZC2hhjTD12WMkYY0w9VhyMMcbUY8XBGGNMPVYcjDHG1GPFwRhjTD1WHIwxxtRjxcEYY0w9VhyMMcbU8/8BgM9I2swtGFEAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"hubei_curve.plot.line()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datetime.datetime(2019, 12, 15, 0, 0)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import datetime\n",
"date_start_hubei = datetime.datetime(2019, 12, 15) #hubei_curve.index.min()\n",
"date_start_hubei"
]
},
{
"cell_type": "code",
"execution_count": 30,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" <th>num_states</th>\n",
" <th>pop</th>\n",
" <th>date_of_first_infection</th>\n",
" <th>date_delta_hubei</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</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>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" <td>1</td>\n",
" <td>38928346.0</td>\n",
" <td>2020-02-24</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" <td>1</td>\n",
" <td>2877797.0</td>\n",
" <td>2020-03-09</td>\n",
" <td>85 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" <td>1</td>\n",
" <td>43851044.0</td>\n",
" <td>2020-02-25</td>\n",
" <td>72 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" <td>1</td>\n",
" <td>77265.0</td>\n",
" <td>2020-03-02</td>\n",
" <td>78 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>100000.0</td>\n",
" <td>1</td>\n",
" <td>100000.0</td>\n",
" <td>2020-03-20</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" <td>1</td>\n",
" <td>33469203.0</td>\n",
" <td>2020-03-15</td>\n",
" <td>91 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" <td>1</td>\n",
" <td>28435940.0</td>\n",
" <td>2020-03-14</td>\n",
" <td>90 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" <td>1</td>\n",
" <td>97338579.0</td>\n",
" <td>2020-01-23</td>\n",
" <td>39 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" <td>1</td>\n",
" <td>18383955.0</td>\n",
" <td>2020-03-18</td>\n",
" <td>94 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" <td>1</td>\n",
" <td>14862924.0</td>\n",
" <td>2020-03-20</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country num_states \\\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0 1 \n",
"Albania_nan Albania NaN 2877797.0 1 \n",
"Algeria_nan Algeria NaN 43851044.0 1 \n",
"Andorra_nan Andorra NaN 77265.0 1 \n",
"Angola_nan Angola NaN 100000.0 1 \n",
"... ... ... ... ... \n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0 1 \n",
"Venezuela_nan Venezuela NaN 28435940.0 1 \n",
"Vietnam_nan Vietnam NaN 97338579.0 1 \n",
"Zambia_nan Zambia NaN 18383955.0 1 \n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0 1 \n",
"\n",
" pop date_of_first_infection date_delta_hubei \n",
"geo_id \n",
"Afghanistan_nan 38928346.0 2020-02-24 71 days \n",
"Albania_nan 2877797.0 2020-03-09 85 days \n",
"Algeria_nan 43851044.0 2020-02-25 72 days \n",
"Andorra_nan 77265.0 2020-03-02 78 days \n",
"Angola_nan 100000.0 2020-03-20 96 days \n",
"... ... ... ... \n",
"Uzbekistan_nan 33469203.0 2020-03-15 91 days \n",
"Venezuela_nan 28435940.0 2020-03-14 90 days \n",
"Vietnam_nan 97338579.0 2020-01-23 39 days \n",
"Zambia_nan 18383955.0 2020-03-18 94 days \n",
"Zimbabwe_nan 14862924.0 2020-03-20 96 days \n",
"\n",
"[294 rows x 7 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"area_features['date_delta_hubei'] = area_features['date_of_first_infection'] - date_start_hubei\n",
"area_features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1.5 Population Scale to Hubei"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"58500000.0"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"population_hubei = 58.5 * 10**6\n",
"population_hubei"
]
},
{
"cell_type": "code",
"execution_count": 32,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" <th>num_states</th>\n",
" <th>pop</th>\n",
" <th>date_of_first_infection</th>\n",
" <th>date_delta_hubei</th>\n",
" <th>pop_scale_hubei</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</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>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" <td>1</td>\n",
" <td>38928346.0</td>\n",
" <td>2020-02-24</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" <td>1</td>\n",
" <td>2877797.0</td>\n",
" <td>2020-03-09</td>\n",
" <td>85 days</td>\n",
" <td>0.049193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" <td>1</td>\n",
" <td>43851044.0</td>\n",
" <td>2020-02-25</td>\n",
" <td>72 days</td>\n",
" <td>0.749590</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" <td>1</td>\n",
" <td>77265.0</td>\n",
" <td>2020-03-02</td>\n",
" <td>78 days</td>\n",
" <td>0.001321</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>100000.0</td>\n",
" <td>1</td>\n",
" <td>100000.0</td>\n",
" <td>2020-03-20</td>\n",
" <td>96 days</td>\n",
" <td>0.001709</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" <td>1</td>\n",
" <td>33469203.0</td>\n",
" <td>2020-03-15</td>\n",
" <td>91 days</td>\n",
" <td>0.572123</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" <td>1</td>\n",
" <td>28435940.0</td>\n",
" <td>2020-03-14</td>\n",
" <td>90 days</td>\n",
" <td>0.486084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" <td>1</td>\n",
" <td>97338579.0</td>\n",
" <td>2020-01-23</td>\n",
" <td>39 days</td>\n",
" <td>1.663907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" <td>1</td>\n",
" <td>18383955.0</td>\n",
" <td>2020-03-18</td>\n",
" <td>94 days</td>\n",
" <td>0.314256</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" <td>1</td>\n",
" <td>14862924.0</td>\n",
" <td>2020-03-20</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country num_states \\\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0 1 \n",
"Albania_nan Albania NaN 2877797.0 1 \n",
"Algeria_nan Algeria NaN 43851044.0 1 \n",
"Andorra_nan Andorra NaN 77265.0 1 \n",
"Angola_nan Angola NaN 100000.0 1 \n",
"... ... ... ... ... \n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0 1 \n",
"Venezuela_nan Venezuela NaN 28435940.0 1 \n",
"Vietnam_nan Vietnam NaN 97338579.0 1 \n",
"Zambia_nan Zambia NaN 18383955.0 1 \n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0 1 \n",
"\n",
" pop date_of_first_infection date_delta_hubei \\\n",
"geo_id \n",
"Afghanistan_nan 38928346.0 2020-02-24 71 days \n",
"Albania_nan 2877797.0 2020-03-09 85 days \n",
"Algeria_nan 43851044.0 2020-02-25 72 days \n",
"Andorra_nan 77265.0 2020-03-02 78 days \n",
"Angola_nan 100000.0 2020-03-20 96 days \n",
"... ... ... ... \n",
"Uzbekistan_nan 33469203.0 2020-03-15 91 days \n",
"Venezuela_nan 28435940.0 2020-03-14 90 days \n",
"Vietnam_nan 97338579.0 2020-01-23 39 days \n",
"Zambia_nan 18383955.0 2020-03-18 94 days \n",
"Zimbabwe_nan 14862924.0 2020-03-20 96 days \n",
"\n",
" pop_scale_hubei \n",
"geo_id \n",
"Afghanistan_nan 0.665442 \n",
"Albania_nan 0.049193 \n",
"Algeria_nan 0.749590 \n",
"Andorra_nan 0.001321 \n",
"Angola_nan 0.001709 \n",
"... ... \n",
"Uzbekistan_nan 0.572123 \n",
"Venezuela_nan 0.486084 \n",
"Vietnam_nan 1.663907 \n",
"Zambia_nan 0.314256 \n",
"Zimbabwe_nan 0.254067 \n",
"\n",
"[294 rows x 8 columns]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"area_features['pop_scale_hubei'] = area_features['pop'] / population_hubei\n",
"area_features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.2 Set Hubei S-Curve for All Areas"
]
},
{
"cell_type": "code",
"execution_count": 33,
"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>Province_State</th>\n",
" <th>pop_country</th>\n",
" <th>num_states</th>\n",
" <th>pop</th>\n",
" <th>date_of_first_infection</th>\n",
" <th>date_delta_hubei</th>\n",
" <th>pop_scale_hubei</th>\n",
" </tr>\n",
" <tr>\n",
" <th>geo_id</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>Afghanistan_nan</th>\n",
" <td>Afghanistan</td>\n",
" <td>NaN</td>\n",
" <td>38928346.0</td>\n",
" <td>1</td>\n",
" <td>38928346.0</td>\n",
" <td>2020-02-24</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Albania_nan</th>\n",
" <td>Albania</td>\n",
" <td>NaN</td>\n",
" <td>2877797.0</td>\n",
" <td>1</td>\n",
" <td>2877797.0</td>\n",
" <td>2020-03-09</td>\n",
" <td>85 days</td>\n",
" <td>0.049193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Algeria_nan</th>\n",
" <td>Algeria</td>\n",
" <td>NaN</td>\n",
" <td>43851044.0</td>\n",
" <td>1</td>\n",
" <td>43851044.0</td>\n",
" <td>2020-02-25</td>\n",
" <td>72 days</td>\n",
" <td>0.749590</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Andorra_nan</th>\n",
" <td>Andorra</td>\n",
" <td>NaN</td>\n",
" <td>77265.0</td>\n",
" <td>1</td>\n",
" <td>77265.0</td>\n",
" <td>2020-03-02</td>\n",
" <td>78 days</td>\n",
" <td>0.001321</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Angola_nan</th>\n",
" <td>Angola</td>\n",
" <td>NaN</td>\n",
" <td>100000.0</td>\n",
" <td>1</td>\n",
" <td>100000.0</td>\n",
" <td>2020-03-20</td>\n",
" <td>96 days</td>\n",
" <td>0.001709</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Uzbekistan_nan</th>\n",
" <td>Uzbekistan</td>\n",
" <td>NaN</td>\n",
" <td>33469203.0</td>\n",
" <td>1</td>\n",
" <td>33469203.0</td>\n",
" <td>2020-03-15</td>\n",
" <td>91 days</td>\n",
" <td>0.572123</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Venezuela_nan</th>\n",
" <td>Venezuela</td>\n",
" <td>NaN</td>\n",
" <td>28435940.0</td>\n",
" <td>1</td>\n",
" <td>28435940.0</td>\n",
" <td>2020-03-14</td>\n",
" <td>90 days</td>\n",
" <td>0.486084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Vietnam_nan</th>\n",
" <td>Vietnam</td>\n",
" <td>NaN</td>\n",
" <td>97338579.0</td>\n",
" <td>1</td>\n",
" <td>97338579.0</td>\n",
" <td>2020-01-23</td>\n",
" <td>39 days</td>\n",
" <td>1.663907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zambia_nan</th>\n",
" <td>Zambia</td>\n",
" <td>NaN</td>\n",
" <td>18383955.0</td>\n",
" <td>1</td>\n",
" <td>18383955.0</td>\n",
" <td>2020-03-18</td>\n",
" <td>94 days</td>\n",
" <td>0.314256</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zimbabwe_nan</th>\n",
" <td>Zimbabwe</td>\n",
" <td>NaN</td>\n",
" <td>14862924.0</td>\n",
" <td>1</td>\n",
" <td>14862924.0</td>\n",
" <td>2020-03-20</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>294 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" Country_Region Province_State pop_country num_states \\\n",
"geo_id \n",
"Afghanistan_nan Afghanistan NaN 38928346.0 1 \n",
"Albania_nan Albania NaN 2877797.0 1 \n",
"Algeria_nan Algeria NaN 43851044.0 1 \n",
"Andorra_nan Andorra NaN 77265.0 1 \n",
"Angola_nan Angola NaN 100000.0 1 \n",
"... ... ... ... ... \n",
"Uzbekistan_nan Uzbekistan NaN 33469203.0 1 \n",
"Venezuela_nan Venezuela NaN 28435940.0 1 \n",
"Vietnam_nan Vietnam NaN 97338579.0 1 \n",
"Zambia_nan Zambia NaN 18383955.0 1 \n",
"Zimbabwe_nan Zimbabwe NaN 14862924.0 1 \n",
"\n",
" pop date_of_first_infection date_delta_hubei \\\n",
"geo_id \n",
"Afghanistan_nan 38928346.0 2020-02-24 71 days \n",
"Albania_nan 2877797.0 2020-03-09 85 days \n",
"Algeria_nan 43851044.0 2020-02-25 72 days \n",
"Andorra_nan 77265.0 2020-03-02 78 days \n",
"Angola_nan 100000.0 2020-03-20 96 days \n",
"... ... ... ... \n",
"Uzbekistan_nan 33469203.0 2020-03-15 91 days \n",
"Venezuela_nan 28435940.0 2020-03-14 90 days \n",
"Vietnam_nan 97338579.0 2020-01-23 39 days \n",
"Zambia_nan 18383955.0 2020-03-18 94 days \n",
"Zimbabwe_nan 14862924.0 2020-03-20 96 days \n",
"\n",
" pop_scale_hubei \n",
"geo_id \n",
"Afghanistan_nan 0.665442 \n",
"Albania_nan 0.049193 \n",
"Algeria_nan 0.749590 \n",
"Andorra_nan 0.001321 \n",
"Angola_nan 0.001709 \n",
"... ... \n",
"Uzbekistan_nan 0.572123 \n",
"Venezuela_nan 0.486084 \n",
"Vietnam_nan 1.663907 \n",
"Zambia_nan 0.314256 \n",
"Zimbabwe_nan 0.254067 \n",
"\n",
"[294 rows x 8 columns]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"area_features"
]
},
{
"cell_type": "code",
"execution_count": 34,
"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>geo_id</th>\n",
" <th>Date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date\n",
"0 Afghanistan_nan 2020-01-22\n",
"1 Afghanistan_nan 2020-01-23\n",
"2 Afghanistan_nan 2020-01-24\n",
"3 Afghanistan_nan 2020-01-25\n",
"4 Afghanistan_nan 2020-01-26\n",
"... ... ...\n",
"19693 Zimbabwe_nan 2020-03-24\n",
"19694 Zimbabwe_nan 2020-03-25\n",
"19695 Zimbabwe_nan 2020-03-26\n",
"19696 Zimbabwe_nan 2020-03-27\n",
"19697 Zimbabwe_nan 2020-03-28\n",
"\n",
"[19698 rows x 2 columns]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = train[['geo_id', 'Date']]\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 35,
"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>geo_id</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-22</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-23</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-24</td>\n",
" <td>549.0</td>\n",
" <td>24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-25</td>\n",
" <td>761.0</td>\n",
" <td>40.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-26</td>\n",
" <td>1058.0</td>\n",
" <td>52.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-24</td>\n",
" <td>67801.0</td>\n",
" <td>3160.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-25</td>\n",
" <td>67801.0</td>\n",
" <td>3163.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-26</td>\n",
" <td>67801.0</td>\n",
" <td>3169.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-27</td>\n",
" <td>67801.0</td>\n",
" <td>3174.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-28</td>\n",
" <td>67801.0</td>\n",
" <td>3177.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date ConfirmedCases Fatalities\n",
"0 Afghanistan_nan 2020-01-22 444.0 17.0\n",
"1 Afghanistan_nan 2020-01-23 444.0 17.0\n",
"2 Afghanistan_nan 2020-01-24 549.0 24.0\n",
"3 Afghanistan_nan 2020-01-25 761.0 40.0\n",
"4 Afghanistan_nan 2020-01-26 1058.0 52.0\n",
"... ... ... ... ...\n",
"19693 Zimbabwe_nan 2020-03-24 67801.0 3160.0\n",
"19694 Zimbabwe_nan 2020-03-25 67801.0 3163.0\n",
"19695 Zimbabwe_nan 2020-03-26 67801.0 3169.0\n",
"19696 Zimbabwe_nan 2020-03-27 67801.0 3174.0\n",
"19697 Zimbabwe_nan 2020-03-28 67801.0 3177.0\n",
"\n",
"[19698 rows x 4 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# add Hubei Curve to all Areas\n",
"data = data.join(hubei_curve, on='Date')\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.3 Translate Hubei S-[](http://)Curve\n",
"Translating Hubei curve to date of first infection of each Province_State"
]
},
{
"cell_type": "code",
"execution_count": 36,
"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>geo_id</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" <th>date_delta_hubei</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-22</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-23</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-24</td>\n",
" <td>549.0</td>\n",
" <td>24.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-25</td>\n",
" <td>761.0</td>\n",
" <td>40.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-01-26</td>\n",
" <td>1058.0</td>\n",
" <td>52.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-24</td>\n",
" <td>67801.0</td>\n",
" <td>3160.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-25</td>\n",
" <td>67801.0</td>\n",
" <td>3163.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-26</td>\n",
" <td>67801.0</td>\n",
" <td>3169.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-27</td>\n",
" <td>67801.0</td>\n",
" <td>3174.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-03-28</td>\n",
" <td>67801.0</td>\n",
" <td>3177.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date ConfirmedCases Fatalities date_delta_hubei\n",
"0 Afghanistan_nan 2020-01-22 444.0 17.0 71 days\n",
"1 Afghanistan_nan 2020-01-23 444.0 17.0 71 days\n",
"2 Afghanistan_nan 2020-01-24 549.0 24.0 71 days\n",
"3 Afghanistan_nan 2020-01-25 761.0 40.0 71 days\n",
"4 Afghanistan_nan 2020-01-26 1058.0 52.0 71 days\n",
"... ... ... ... ... ...\n",
"19693 Zimbabwe_nan 2020-03-24 67801.0 3160.0 96 days\n",
"19694 Zimbabwe_nan 2020-03-25 67801.0 3163.0 96 days\n",
"19695 Zimbabwe_nan 2020-03-26 67801.0 3169.0 96 days\n",
"19696 Zimbabwe_nan 2020-03-27 67801.0 3174.0 96 days\n",
"19697 Zimbabwe_nan 2020-03-28 67801.0 3177.0 96 days\n",
"\n",
"[19698 rows x 5 columns]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = data.join(area_features[['date_delta_hubei']], on=\"geo_id\")\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 37,
"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>geo_id</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" <th>date_delta_hubei</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-02</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-03</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-04</td>\n",
" <td>549.0</td>\n",
" <td>24.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-05</td>\n",
" <td>761.0</td>\n",
" <td>40.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-06</td>\n",
" <td>1058.0</td>\n",
" <td>52.0</td>\n",
" <td>71 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-28</td>\n",
" <td>67801.0</td>\n",
" <td>3160.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-29</td>\n",
" <td>67801.0</td>\n",
" <td>3163.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-30</td>\n",
" <td>67801.0</td>\n",
" <td>3169.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-01</td>\n",
" <td>67801.0</td>\n",
" <td>3174.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-02</td>\n",
" <td>67801.0</td>\n",
" <td>3177.0</td>\n",
" <td>96 days</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date ConfirmedCases Fatalities date_delta_hubei\n",
"0 Afghanistan_nan 2020-04-02 444.0 17.0 71 days\n",
"1 Afghanistan_nan 2020-04-03 444.0 17.0 71 days\n",
"2 Afghanistan_nan 2020-04-04 549.0 24.0 71 days\n",
"3 Afghanistan_nan 2020-04-05 761.0 40.0 71 days\n",
"4 Afghanistan_nan 2020-04-06 1058.0 52.0 71 days\n",
"... ... ... ... ... ...\n",
"19693 Zimbabwe_nan 2020-06-28 67801.0 3160.0 96 days\n",
"19694 Zimbabwe_nan 2020-06-29 67801.0 3163.0 96 days\n",
"19695 Zimbabwe_nan 2020-06-30 67801.0 3169.0 96 days\n",
"19696 Zimbabwe_nan 2020-07-01 67801.0 3174.0 96 days\n",
"19697 Zimbabwe_nan 2020-07-02 67801.0 3177.0 96 days\n",
"\n",
"[19698 rows x 5 columns]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# translate by date_delta_hubei\n",
"data['Date'] = data['Date'] + data['date_delta_hubei']\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.4 Scale Hubei S-Curve\n",
"Scale Hubei curve to population by each Province_State****"
]
},
{
"cell_type": "code",
"execution_count": 38,
"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>geo_id</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" <th>date_delta_hubei</th>\n",
" <th>pop_scale_hubei</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-02</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-03</td>\n",
" <td>444.0</td>\n",
" <td>17.0</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-04</td>\n",
" <td>549.0</td>\n",
" <td>24.0</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-05</td>\n",
" <td>761.0</td>\n",
" <td>40.0</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-06</td>\n",
" <td>1058.0</td>\n",
" <td>52.0</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-28</td>\n",
" <td>67801.0</td>\n",
" <td>3160.0</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-29</td>\n",
" <td>67801.0</td>\n",
" <td>3163.0</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-30</td>\n",
" <td>67801.0</td>\n",
" <td>3169.0</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-01</td>\n",
" <td>67801.0</td>\n",
" <td>3174.0</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-02</td>\n",
" <td>67801.0</td>\n",
" <td>3177.0</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date ConfirmedCases Fatalities \\\n",
"0 Afghanistan_nan 2020-04-02 444.0 17.0 \n",
"1 Afghanistan_nan 2020-04-03 444.0 17.0 \n",
"2 Afghanistan_nan 2020-04-04 549.0 24.0 \n",
"3 Afghanistan_nan 2020-04-05 761.0 40.0 \n",
"4 Afghanistan_nan 2020-04-06 1058.0 52.0 \n",
"... ... ... ... ... \n",
"19693 Zimbabwe_nan 2020-06-28 67801.0 3160.0 \n",
"19694 Zimbabwe_nan 2020-06-29 67801.0 3163.0 \n",
"19695 Zimbabwe_nan 2020-06-30 67801.0 3169.0 \n",
"19696 Zimbabwe_nan 2020-07-01 67801.0 3174.0 \n",
"19697 Zimbabwe_nan 2020-07-02 67801.0 3177.0 \n",
"\n",
" date_delta_hubei pop_scale_hubei \n",
"0 71 days 0.665442 \n",
"1 71 days 0.665442 \n",
"2 71 days 0.665442 \n",
"3 71 days 0.665442 \n",
"4 71 days 0.665442 \n",
"... ... ... \n",
"19693 96 days 0.254067 \n",
"19694 96 days 0.254067 \n",
"19695 96 days 0.254067 \n",
"19696 96 days 0.254067 \n",
"19697 96 days 0.254067 \n",
"\n",
"[19698 rows x 6 columns]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = data.join(area_features[['pop_scale_hubei']], on=\"geo_id\")\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 39,
"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>geo_id</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" <th>date_delta_hubei</th>\n",
" <th>pop_scale_hubei</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-02</td>\n",
" <td>295.456165</td>\n",
" <td>11.312511</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-03</td>\n",
" <td>295.456165</td>\n",
" <td>11.312511</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-04</td>\n",
" <td>365.327555</td>\n",
" <td>15.970603</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-05</td>\n",
" <td>506.401219</td>\n",
" <td>26.617672</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-06</td>\n",
" <td>704.037437</td>\n",
" <td>34.602974</td>\n",
" <td>71 days</td>\n",
" <td>0.665442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-28</td>\n",
" <td>17226.001882</td>\n",
" <td>802.851963</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-29</td>\n",
" <td>17226.001882</td>\n",
" <td>803.614164</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-30</td>\n",
" <td>17226.001882</td>\n",
" <td>805.138567</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-01</td>\n",
" <td>17226.001882</td>\n",
" <td>806.408902</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-02</td>\n",
" <td>17226.001882</td>\n",
" <td>807.171103</td>\n",
" <td>96 days</td>\n",
" <td>0.254067</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date ConfirmedCases Fatalities \\\n",
"0 Afghanistan_nan 2020-04-02 295.456165 11.312511 \n",
"1 Afghanistan_nan 2020-04-03 295.456165 11.312511 \n",
"2 Afghanistan_nan 2020-04-04 365.327555 15.970603 \n",
"3 Afghanistan_nan 2020-04-05 506.401219 26.617672 \n",
"4 Afghanistan_nan 2020-04-06 704.037437 34.602974 \n",
"... ... ... ... ... \n",
"19693 Zimbabwe_nan 2020-06-28 17226.001882 802.851963 \n",
"19694 Zimbabwe_nan 2020-06-29 17226.001882 803.614164 \n",
"19695 Zimbabwe_nan 2020-06-30 17226.001882 805.138567 \n",
"19696 Zimbabwe_nan 2020-07-01 17226.001882 806.408902 \n",
"19697 Zimbabwe_nan 2020-07-02 17226.001882 807.171103 \n",
"\n",
" date_delta_hubei pop_scale_hubei \n",
"0 71 days 0.665442 \n",
"1 71 days 0.665442 \n",
"2 71 days 0.665442 \n",
"3 71 days 0.665442 \n",
"4 71 days 0.665442 \n",
"... ... ... \n",
"19693 96 days 0.254067 \n",
"19694 96 days 0.254067 \n",
"19695 96 days 0.254067 \n",
"19696 96 days 0.254067 \n",
"19697 96 days 0.254067 \n",
"\n",
"[19698 rows x 6 columns]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# scale by pop_scale_hubei\n",
"data['ConfirmedCases'] = data['ConfirmedCases'] * data['pop_scale_hubei']\n",
"data['Fatalities'] = data['Fatalities'] * data['pop_scale_hubei']\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.5 Generate Submission"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>geo_id</th>\n",
" <th>Date</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-02</td>\n",
" <td>295.456165</td>\n",
" <td>11.312511</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-03</td>\n",
" <td>295.456165</td>\n",
" <td>11.312511</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-04</td>\n",
" <td>365.327555</td>\n",
" <td>15.970603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-05</td>\n",
" <td>506.401219</td>\n",
" <td>26.617672</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Afghanistan_nan</td>\n",
" <td>2020-04-06</td>\n",
" <td>704.037437</td>\n",
" <td>34.602974</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19693</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-28</td>\n",
" <td>17226.001882</td>\n",
" <td>802.851963</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19694</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-29</td>\n",
" <td>17226.001882</td>\n",
" <td>803.614164</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19695</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-06-30</td>\n",
" <td>17226.001882</td>\n",
" <td>805.138567</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19696</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-01</td>\n",
" <td>17226.001882</td>\n",
" <td>806.408902</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19697</th>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>2020-07-02</td>\n",
" <td>17226.001882</td>\n",
" <td>807.171103</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>19698 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" geo_id Date ConfirmedCases Fatalities\n",
"0 Afghanistan_nan 2020-04-02 295.456165 11.312511\n",
"1 Afghanistan_nan 2020-04-03 295.456165 11.312511\n",
"2 Afghanistan_nan 2020-04-04 365.327555 15.970603\n",
"3 Afghanistan_nan 2020-04-05 506.401219 26.617672\n",
"4 Afghanistan_nan 2020-04-06 704.037437 34.602974\n",
"... ... ... ... ...\n",
"19693 Zimbabwe_nan 2020-06-28 17226.001882 802.851963\n",
"19694 Zimbabwe_nan 2020-06-29 17226.001882 803.614164\n",
"19695 Zimbabwe_nan 2020-06-30 17226.001882 805.138567\n",
"19696 Zimbabwe_nan 2020-07-01 17226.001882 806.408902\n",
"19697 Zimbabwe_nan 2020-07-02 17226.001882 807.171103\n",
"\n",
"[19698 rows x 4 columns]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# drop unneeded columns\n",
"data = data[['geo_id', 'Date', 'ConfirmedCases', 'Fatalities']]\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"geo_id\n",
"Afghanistan_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Albania_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Algeria_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Andorra_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Angola_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
" ... \n",
"Uzbekistan_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Venezuela_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Vietnam_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Zambia_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Zimbabwe_nan AxesSubplot(0.125,0.125;0.775x0.755)\n",
"Length: 294, dtype: object"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"data.sort_values(by=\"Date\").groupby('geo_id').plot.line(x='Date', y='ConfirmedCases', ax=ax, legend=False)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"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>ForecastId</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" <th>geo_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-19</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-20</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-21</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-22</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-23</td>\n",
" <td>Afghanistan_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12637</th>\n",
" <td>12638</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-26</td>\n",
" <td>Zimbabwe_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12638</th>\n",
" <td>12639</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-27</td>\n",
" <td>Zimbabwe_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12639</th>\n",
" <td>12640</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-28</td>\n",
" <td>Zimbabwe_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>12641</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-29</td>\n",
" <td>Zimbabwe_nan</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12641</th>\n",
" <td>12642</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-30</td>\n",
" <td>Zimbabwe_nan</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12642 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" ForecastId Province_State Country_Region Date geo_id\n",
"0 1 NaN Afghanistan 2020-03-19 Afghanistan_nan\n",
"1 2 NaN Afghanistan 2020-03-20 Afghanistan_nan\n",
"2 3 NaN Afghanistan 2020-03-21 Afghanistan_nan\n",
"3 4 NaN Afghanistan 2020-03-22 Afghanistan_nan\n",
"4 5 NaN Afghanistan 2020-03-23 Afghanistan_nan\n",
"... ... ... ... ... ...\n",
"12637 12638 NaN Zimbabwe 2020-04-26 Zimbabwe_nan\n",
"12638 12639 NaN Zimbabwe 2020-04-27 Zimbabwe_nan\n",
"12639 12640 NaN Zimbabwe 2020-04-28 Zimbabwe_nan\n",
"12640 12641 NaN Zimbabwe 2020-04-29 Zimbabwe_nan\n",
"12641 12642 NaN Zimbabwe 2020-04-30 Zimbabwe_nan\n",
"\n",
"[12642 rows x 5 columns]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test"
]
},
{
"cell_type": "code",
"execution_count": 43,
"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>ForecastId</th>\n",
" <th>Province_State</th>\n",
" <th>Country_Region</th>\n",
" <th>Date</th>\n",
" <th>geo_id</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-19</td>\n",
" <td>Afghanistan_nan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-20</td>\n",
" <td>Afghanistan_nan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-21</td>\n",
" <td>Afghanistan_nan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-22</td>\n",
" <td>Afghanistan_nan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Afghanistan</td>\n",
" <td>2020-03-23</td>\n",
" <td>Afghanistan_nan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12637</th>\n",
" <td>12638</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-26</td>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12638</th>\n",
" <td>12639</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-27</td>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>112.805782</td>\n",
" <td>4.319140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12639</th>\n",
" <td>12640</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-28</td>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>112.805782</td>\n",
" <td>4.319140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>12641</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-29</td>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>139.482825</td>\n",
" <td>6.097610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12641</th>\n",
" <td>12642</td>\n",
" <td>NaN</td>\n",
" <td>Zimbabwe</td>\n",
" <td>2020-04-30</td>\n",
" <td>Zimbabwe_nan</td>\n",
" <td>193.345046</td>\n",
" <td>10.162683</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12642 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" ForecastId Province_State Country_Region Date geo_id \\\n",
"0 1 NaN Afghanistan 2020-03-19 Afghanistan_nan \n",
"1 2 NaN Afghanistan 2020-03-20 Afghanistan_nan \n",
"2 3 NaN Afghanistan 2020-03-21 Afghanistan_nan \n",
"3 4 NaN Afghanistan 2020-03-22 Afghanistan_nan \n",
"4 5 NaN Afghanistan 2020-03-23 Afghanistan_nan \n",
"... ... ... ... ... ... \n",
"12637 12638 NaN Zimbabwe 2020-04-26 Zimbabwe_nan \n",
"12638 12639 NaN Zimbabwe 2020-04-27 Zimbabwe_nan \n",
"12639 12640 NaN Zimbabwe 2020-04-28 Zimbabwe_nan \n",
"12640 12641 NaN Zimbabwe 2020-04-29 Zimbabwe_nan \n",
"12641 12642 NaN Zimbabwe 2020-04-30 Zimbabwe_nan \n",
"\n",
" ConfirmedCases Fatalities \n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"... ... ... \n",
"12637 NaN NaN \n",
"12638 112.805782 4.319140 \n",
"12639 112.805782 4.319140 \n",
"12640 139.482825 6.097610 \n",
"12641 193.345046 10.162683 \n",
"\n",
"[12642 rows x 7 columns]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# join \n",
"submission = pd.merge(test, data, how=\"left\", on=[\"geo_id\", 'Date'])\n",
"submission"
]
},
{
"cell_type": "code",
"execution_count": 44,
"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>ForecastId</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12637</th>\n",
" <td>12638</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12638</th>\n",
" <td>12639</td>\n",
" <td>112.805782</td>\n",
" <td>4.319140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12639</th>\n",
" <td>12640</td>\n",
" <td>112.805782</td>\n",
" <td>4.319140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>12641</td>\n",
" <td>139.482825</td>\n",
" <td>6.097610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12641</th>\n",
" <td>12642</td>\n",
" <td>193.345046</td>\n",
" <td>10.162683</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12642 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" ForecastId ConfirmedCases Fatalities\n",
"0 1 NaN NaN\n",
"1 2 NaN NaN\n",
"2 3 NaN NaN\n",
"3 4 NaN NaN\n",
"4 5 NaN NaN\n",
"... ... ... ...\n",
"12637 12638 NaN NaN\n",
"12638 12639 112.805782 4.319140\n",
"12639 12640 112.805782 4.319140\n",
"12640 12641 139.482825 6.097610\n",
"12641 12642 193.345046 10.162683\n",
"\n",
"[12642 rows x 3 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"submission = submission[['ForecastId', 'ConfirmedCases', 'Fatalities']]\n",
"submission"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py:4259: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" **kwargs\n"
]
},
{
"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>ForecastId</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12637</th>\n",
" <td>12638</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12638</th>\n",
" <td>12639</td>\n",
" <td>112.805782</td>\n",
" <td>4.319140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12639</th>\n",
" <td>12640</td>\n",
" <td>112.805782</td>\n",
" <td>4.319140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12640</th>\n",
" <td>12641</td>\n",
" <td>139.482825</td>\n",
" <td>6.097610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12641</th>\n",
" <td>12642</td>\n",
" <td>193.345046</td>\n",
" <td>10.162683</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12642 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" ForecastId ConfirmedCases Fatalities\n",
"0 1 0.000000 0.000000\n",
"1 2 0.000000 0.000000\n",
"2 3 0.000000 0.000000\n",
"3 4 0.000000 0.000000\n",
"4 5 0.000000 0.000000\n",
"... ... ... ...\n",
"12637 12638 0.000000 0.000000\n",
"12638 12639 112.805782 4.319140\n",
"12639 12640 112.805782 4.319140\n",
"12640 12641 139.482825 6.097610\n",
"12641 12642 193.345046 10.162683\n",
"\n",
"[12642 rows x 3 columns]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"submission.fillna(0, inplace=True)\n",
"submission"
]
},
{
"cell_type": "code",
"execution_count": 46,
"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>ForecastId</th>\n",
" <th>ConfirmedCases</th>\n",
" <th>Fatalities</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>12642.000000</td>\n",
" <td>1.264200e+04</td>\n",
" <td>12642.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>6321.500000</td>\n",
" <td>1.431743e+04</td>\n",
" <td>550.230093</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>3649.575386</td>\n",
" <td>8.137373e+04</td>\n",
" <td>3220.130825</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>3161.250000</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>6321.500000</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>9481.750000</td>\n",
" <td>3.064835e+03</td>\n",
" <td>93.633302</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>12642.000000</td>\n",
" <td>1.599248e+06</td>\n",
" <td>72774.590218</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ForecastId ConfirmedCases Fatalities\n",
"count 12642.000000 1.264200e+04 12642.000000\n",
"mean 6321.500000 1.431743e+04 550.230093\n",
"std 3649.575386 8.137373e+04 3220.130825\n",
"min 1.000000 0.000000e+00 0.000000\n",
"25% 3161.250000 0.000000e+00 0.000000\n",
"50% 6321.500000 0.000000e+00 0.000000\n",
"75% 9481.750000 3.064835e+03 93.633302\n",
"max 12642.000000 1.599248e+06 72774.590218"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"submission.describe()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"submission.to_csv('submission.csv', index=False)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment