From c42bb0d66367b642bb59c864f0416ac338955a12 Mon Sep 17 00:00:00 2001 From: Chandrasekhar Ramakrishnan <cramakri@ethz.ch> Date: Wed, 18 Mar 2020 21:52:40 +0000 Subject: [PATCH] feat: example for working with covidtracking data --- .../examples/covidtracking-example.ipynb | 1058 +++++++++++++++++ 1 file changed, 1058 insertions(+) create mode 100644 notebooks/examples/covidtracking-example.ipynb diff --git a/notebooks/examples/covidtracking-example.ipynb b/notebooks/examples/covidtracking-example.ipynb new file mode 100644 index 000000000..89fa1b8dc --- /dev/null +++ b/notebooks/examples/covidtracking-example.ipynb @@ -0,0 +1,1058 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import altair as alt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Look at the metadata" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "metadata_df = pd.read_json('../../data/covidtracking/states-metadata.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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>state</th>\n", + " <th>dataSite</th>\n", + " <th>covid19Site</th>\n", + " <th>twitter</th>\n", + " <th>pui</th>\n", + " <th>pum</th>\n", + " <th>notes</th>\n", + " <th>name</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>AK</td>\n", + " <td>http://dhss.alaska.gov/dph/Epi/id/Pages/COVID-...</td>\n", + " <td>http://dhss.alaska.gov/dph/Epi/id/Pages/COVID-...</td>\n", + " <td>@Alaska_DHSS</td>\n", + " <td>All data</td>\n", + " <td>False</td>\n", + " <td>Unclear if their reported number means \"person...</td>\n", + " <td>Alaska</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>AL</td>\n", + " <td>http://www.alabamapublichealth.gov/infectiousd...</td>\n", + " <td>http://www.alabamapublichealth.gov/infectiousd...</td>\n", + " <td>@alpublichealth</td>\n", + " <td>No data</td>\n", + " <td>False</td>\n", + " <td>Last negative count from 3/16.</td>\n", + " <td>Alabama</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>AR</td>\n", + " <td>https://www.healthy.arkansas.gov/programs-serv...</td>\n", + " <td>https://www.healthy.arkansas.gov/programs-serv...</td>\n", + " <td>@adhpio</td>\n", + " <td>All data</td>\n", + " <td>True</td>\n", + " <td>Pending = \"PUIs\"</td>\n", + " <td>Arkansas</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>AZ</td>\n", + " <td>https://www.azdhs.gov/preparedness/epidemiolog...</td>\n", + " <td>https://www.azdhs.gov/preparedness/epidemiolog...</td>\n", + " <td>@azdhs</td>\n", + " <td>All data</td>\n", + " <td>False</td>\n", + " <td>Negative = “Ruled Outâ€. Our total is slightly ...</td>\n", + " <td>Arizona</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>CA</td>\n", + " <td>https://www.cdph.ca.gov/Programs/CID/DCDC/Page...</td>\n", + " <td>https://www.cdph.ca.gov/Programs/CID/DCDC/Page...</td>\n", + " <td>@CAPublicHealth</td>\n", + " <td>Only positives</td>\n", + " <td>False</td>\n", + " <td>Only positives reported regularly. Add deaths ...</td>\n", + " <td>California</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " state dataSite \\\n", + "0 AK http://dhss.alaska.gov/dph/Epi/id/Pages/COVID-... \n", + "1 AL http://www.alabamapublichealth.gov/infectiousd... \n", + "2 AR https://www.healthy.arkansas.gov/programs-serv... \n", + "3 AZ https://www.azdhs.gov/preparedness/epidemiolog... \n", + "4 CA https://www.cdph.ca.gov/Programs/CID/DCDC/Page... \n", + "\n", + " covid19Site twitter \\\n", + "0 http://dhss.alaska.gov/dph/Epi/id/Pages/COVID-... @Alaska_DHSS \n", + "1 http://www.alabamapublichealth.gov/infectiousd... @alpublichealth \n", + "2 https://www.healthy.arkansas.gov/programs-serv... @adhpio \n", + "3 https://www.azdhs.gov/preparedness/epidemiolog... @azdhs \n", + "4 https://www.cdph.ca.gov/Programs/CID/DCDC/Page... @CAPublicHealth \n", + "\n", + " pui pum notes \\\n", + "0 All data False Unclear if their reported number means \"person... \n", + "1 No data False Last negative count from 3/16. \n", + "2 All data True Pending = \"PUIs\" \n", + "3 All data False Negative = “Ruled Outâ€. Our total is slightly ... \n", + "4 Only positives False Only positives reported regularly. Add deaths ... \n", + "\n", + " name \n", + "0 Alaska \n", + "1 Alabama \n", + "2 Arkansas \n", + "3 Arizona \n", + "4 California " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metadata_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Look at the data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "data_df = pd.read_json('../../data/covidtracking/states-daily.json')\n", + "data_df['date'] = pd.to_datetime(data_df['date'], format=\"%Y%m%d\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>date</th>\n", + " <th>state</th>\n", + " <th>positive</th>\n", + " <th>negative</th>\n", + " <th>pending</th>\n", + " <th>death</th>\n", + " <th>total</th>\n", + " <th>dateChecked</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>2020-03-18</td>\n", + " <td>AK</td>\n", + " <td>6.0</td>\n", + " <td>406.0</td>\n", + " <td>NaN</td>\n", + " <td>NaN</td>\n", + " <td>412.0</td>\n", + " <td>2020-03-18T20:00:00Z</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>2020-03-18</td>\n", + " <td>AL</td>\n", + " <td>46.0</td>\n", + " <td>28.0</td>\n", + " <td>NaN</td>\n", + " <td>0.0</td>\n", + " <td>74.0</td>\n", + " <td>2020-03-18T20:00:00Z</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>2020-03-18</td>\n", + " <td>AR</td>\n", + " <td>33.0</td>\n", + " <td>236.0</td>\n", + " <td>50.0</td>\n", + " <td>NaN</td>\n", + " <td>319.0</td>\n", + " <td>2020-03-18T20:00:00Z</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>2020-03-18</td>\n", + " <td>AZ</td>\n", + " <td>28.0</td>\n", + " <td>148.0</td>\n", + " <td>102.0</td>\n", + " <td>0.0</td>\n", + " <td>278.0</td>\n", + " <td>2020-03-18T20:00:00Z</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>2020-03-18</td>\n", + " <td>CA</td>\n", + " <td>611.0</td>\n", + " <td>7981.0</td>\n", + " <td>NaN</td>\n", + " <td>13.0</td>\n", + " <td>8592.0</td>\n", + " <td>2020-03-18T20:00:00Z</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " date state positive negative pending death total \\\n", + "0 2020-03-18 AK 6.0 406.0 NaN NaN 412.0 \n", + "1 2020-03-18 AL 46.0 28.0 NaN 0.0 74.0 \n", + "2 2020-03-18 AR 33.0 236.0 50.0 NaN 319.0 \n", + "3 2020-03-18 AZ 28.0 148.0 102.0 0.0 278.0 \n", + "4 2020-03-18 CA 611.0 7981.0 NaN 13.0 8592.0 \n", + "\n", + " dateChecked \n", + "0 2020-03-18T20:00:00Z \n", + "1 2020-03-18T20:00:00Z \n", + "2 2020-03-18T20:00:00Z \n", + "3 2020-03-18T20:00:00Z \n", + "4 2020-03-18T20:00:00Z " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## How many data points per state?" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "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>state</th>\n", + " <th>date</th>\n", + " <th>positive</th>\n", + " <th>negative</th>\n", + " <th>pending</th>\n", + " <th>death</th>\n", + " <th>total</th>\n", + " <th>dateChecked</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>AZ</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>6</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>5</th>\n", + " <td>CA</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>0</td>\n", + " <td>7</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>10</th>\n", + " <td>FL</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>14</td>\n", + " <td>8</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>11</th>\n", + " <td>GA</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>6</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>16</th>\n", + " <td>IL</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>12</td>\n", + " <td>2</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>21</th>\n", + " <td>MA</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>6</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>30</th>\n", + " <td>NC</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>7</td>\n", + " <td>2</td>\n", + " <td>3</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>33</th>\n", + " <td>NH</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>0</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>37</th>\n", + " <td>NY</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>13</td>\n", + " <td>4</td>\n", + " <td>4</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>40</th>\n", + " <td>OR</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>1</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>44</th>\n", + " <td>SC</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>47</th>\n", + " <td>TX</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>2</td>\n", + " <td>0</td>\n", + " <td>2</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>52</th>\n", + " <td>WA</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>13</td>\n", + " <td>2</td>\n", + " <td>8</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>53</th>\n", + " <td>WI</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " <td>5</td>\n", + " <td>0</td>\n", + " <td>15</td>\n", + " <td>15</td>\n", + " </tr>\n", + " <tr>\n", + " <th>6</th>\n", + " <td>CO</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>4</td>\n", + " <td>5</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>8</th>\n", + " <td>DC</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>12</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>22</th>\n", + " <td>MD</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>2</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>24</th>\n", + " <td>MI</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>12</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>32</th>\n", + " <td>NE</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>11</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>34</th>\n", + " <td>NJ</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>9</td>\n", + " <td>12</td>\n", + " <td>8</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>36</th>\n", + " <td>NV</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>1</td>\n", + " <td>3</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>38</th>\n", + " <td>OH</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>12</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>46</th>\n", + " <td>TN</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>8</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>49</th>\n", + " <td>VA</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>14</td>\n", + " <td>5</td>\n", + " <td>4</td>\n", + " <td>13</td>\n", + " <td>14</td>\n", + " </tr>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>AK</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>7</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>AR</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>9</th>\n", + " <td>DE</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>11</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>14</th>\n", + " <td>IA</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>8</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>17</th>\n", + " <td>IN</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>9</td>\n", + " <td>0</td>\n", + " <td>5</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>18</th>\n", + " <td>KS</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>5</td>\n", + " <td>5</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>19</th>\n", + " <td>KY</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>1</td>\n", + " <td>3</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>25</th>\n", + " <td>MN</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>35</th>\n", + " <td>NM</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>4</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>41</th>\n", + " <td>PA</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>8</td>\n", + " <td>5</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>51</th>\n", + " <td>VT</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>54</th>\n", + " <td>WV</td>\n", + " <td>13</td>\n", + " <td>12</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " <td>4</td>\n", + " <td>13</td>\n", + " <td>13</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>AL</td>\n", + " <td>12</td>\n", + " <td>11</td>\n", + " <td>9</td>\n", + " <td>4</td>\n", + " <td>4</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>7</th>\n", + " <td>CT</td>\n", + " <td>12</td>\n", + " <td>11</td>\n", + " <td>11</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>13</th>\n", + " <td>HI</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>1</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>15</th>\n", + " <td>ID</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>20</th>\n", + " <td>LA</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>11</td>\n", + " <td>0</td>\n", + " <td>4</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>23</th>\n", + " <td>ME</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>6</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>26</th>\n", + " <td>MO</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>7</td>\n", + " <td>0</td>\n", + " <td>5</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>28</th>\n", + " <td>MS</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>8</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>29</th>\n", + " <td>MT</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>5</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>31</th>\n", + " <td>ND</td>\n", + " <td>12</td>\n", + " <td>11</td>\n", + " <td>12</td>\n", + " <td>8</td>\n", + " <td>6</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>39</th>\n", + " <td>OK</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>11</td>\n", + " <td>11</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>43</th>\n", + " <td>RI</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>11</td>\n", + " <td>11</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>45</th>\n", + " <td>SD</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>1</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>48</th>\n", + " <td>UT</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>7</td>\n", + " <td>0</td>\n", + " <td>4</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>55</th>\n", + " <td>WY</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " <td>3</td>\n", + " <td>1</td>\n", + " <td>0</td>\n", + " <td>12</td>\n", + " <td>12</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>AS</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>1</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " </tr>\n", + " <tr>\n", + " <th>12</th>\n", + " <td>GU</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " </tr>\n", + " <tr>\n", + " <th>27</th>\n", + " <td>MP</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>1</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " </tr>\n", + " <tr>\n", + " <th>42</th>\n", + " <td>PR</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>2</td>\n", + " <td>0</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " </tr>\n", + " <tr>\n", + " <th>50</th>\n", + " <td>VI</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " <td>0</td>\n", + " <td>0</td>\n", + " <td>1</td>\n", + " <td>3</td>\n", + " <td>3</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " state date positive negative pending death total dateChecked\n", + "4 AZ 15 15 15 15 6 15 15\n", + "5 CA 15 15 15 0 7 15 15\n", + "10 FL 15 15 15 14 8 15 15\n", + "11 GA 15 15 1 0 6 15 15\n", + "16 IL 15 15 15 12 2 15 15\n", + "21 MA 15 15 6 0 0 14 15\n", + "30 NC 15 15 7 2 3 15 15\n", + "33 NH 15 15 15 15 0 15 15\n", + "37 NY 15 15 13 4 4 15 15\n", + "40 OR 15 15 15 15 1 15 15\n", + "44 SC 15 15 15 3 3 15 15\n", + "47 TX 15 15 2 0 2 15 15\n", + "52 WA 15 15 13 2 8 15 15\n", + "53 WI 15 15 15 5 0 15 15\n", + "6 CO 14 14 14 4 5 14 14\n", + "8 DC 14 14 14 12 0 14 14\n", + "22 MD 14 14 14 2 0 14 14\n", + "24 MI 14 14 14 12 0 14 14\n", + "32 NE 14 14 14 11 0 14 14\n", + "34 NJ 14 14 9 12 8 14 14\n", + "36 NV 14 14 14 1 3 14 14\n", + "38 OH 14 14 14 12 0 14 14\n", + "46 TN 14 14 8 0 0 14 14\n", + "49 VA 14 14 14 5 4 13 14\n", + "0 AK 13 13 13 7 0 13 13\n", + "2 AR 13 13 13 13 0 13 13\n", + "9 DE 13 13 13 11 0 13 13\n", + "14 IA 13 13 13 8 0 13 13\n", + "17 IN 13 13 9 0 5 13 13\n", + "18 KS 13 13 13 5 5 13 13\n", + "19 KY 13 13 13 1 3 13 13\n", + "25 MN 13 13 13 0 0 13 13\n", + "35 NM 13 13 13 4 0 13 13\n", + "41 PA 13 13 8 5 0 12 13\n", + "51 VT 13 13 13 0 0 13 13\n", + "54 WV 13 12 13 13 4 13 13\n", + "1 AL 12 11 9 4 4 12 12\n", + "7 CT 12 11 11 1 0 12 12\n", + "13 HI 12 12 1 1 0 12 12\n", + "15 ID 12 12 12 0 0 12 12\n", + "20 LA 12 12 11 0 4 12 12\n", + "23 ME 12 12 12 6 0 12 12\n", + "26 MO 12 12 7 0 5 12 12\n", + "28 MS 12 12 8 0 0 12 12\n", + "29 MT 12 12 12 5 0 12 12\n", + "31 ND 12 11 12 8 6 12 12\n", + "39 OK 12 12 11 11 0 12 12\n", + "43 RI 12 12 11 11 0 12 12\n", + "45 SD 12 12 12 12 1 12 12\n", + "48 UT 12 12 7 0 4 12 12\n", + "55 WY 12 12 3 1 0 12 12\n", + "3 AS 3 3 0 0 1 3 3\n", + "12 GU 3 3 3 0 0 3 3\n", + "27 MP 3 3 0 0 1 3 3\n", + "42 PR 3 3 3 2 0 3 3\n", + "50 VI 3 3 0 0 1 3 3" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "summary_df = data_df.groupby('state').count()\n", + "summary_df.reset_index().sort_values(['date', 'state'], ascending=[False, True])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab