Pythonを使ってCovid-19(コロナ)のデータを分析しよう【初心者向け】


海外youtubeで、Pythonを使って、Covid-19(コロナ)の感染者数などのデータを使ってデータ分析をするレクチャー動画があったのでやってみました。

出典動画はこちら↓
[Analyzing Coronavirus with Python (COVID-19)](https://www.youtube.com/watch?v=Qkd6effeDVU) by NeuralNine on Youtube

##対象


Pythonの初心者で、Pandasに慣れたいデータ分析をしてみたい方に特におすすめです。
レクチャーは英語ですが、とても平易かつ丁寧な解説なので是非見てみて下さい。

##本記事について
- Jupyter notebook上で日本語でコメントを入れながら、当該動画の演習を行いました。実際に動画を見ながら演習を行うのがおすすめですが、英語が苦手な方やデータ分析の流れを把握したい方が、ざっとこの記事を読むだけでもイメージをつかめるように書いています。
- リアルデータ(※出典は後述)を利用していますが、データ分析プロセスとしては特にシャープな分析結果を目的としているものではなく、(Pandasライブラリ等の)演習に重きを置いたものになります。
- 2020/5/1までのデータを利用しています。(※レクチャー動画は、撮影時の3/22までのデータ)


# 演習
# [Analyzing Coronavirus with Python (COVID-19)](https://www.youtube.com/watch?v=Qkd6effeDVU) by NeuralNine on Youtube

データセットは以下のサイトからダウンロード  
[HDX(HUMANITARIAN DATA EXCHANGE)](https://data.humdata.org/dataset/novel-coronavirus-2019-ncov-cases)

リンク先のデータセットの以下のものを使用  
- time_series_covid19_confirmed_global.csv
- time_series_covid19_deaths_global.csv
- time_series_covid19_recovered_global.csv

【感染(確認)者,死者数,回復者数】 のデータです。


データの名前が長いので、以下のように変更します。
- time_series_covid19_confirmed_global.csv → covid_confirmed.csv
- time_series_covid19_deaths_global.csv → covid_deaths.csv
- time_series_covid19_recovered_global.csv → covid_recovered.csv

ライブラリをインポート


```python
import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline
```

データを読み込みます


```python
confirmed = pd.read_csv("covid19_confirmed.csv")
deaths = pd.read_csv("covid19_deaths.csv")
recovered = pd.read_csv("covid19_recovered.csv")
```

試しに感染者のデータを表示させます(※ 元の動画では、撮影時時点の3/22のデータですが、以下は5/1まで)


```python
confirmed.head()
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Province/State</th>
      <th>Country/Region</th>
      <th>Lat</th>
      <th>Long</th>
      <th>1/22/20</th>
      <th>1/23/20</th>
      <th>1/24/20</th>
      <th>1/25/20</th>
      <th>1/26/20</th>
      <th>1/27/20</th>
      <th>...</th>
      <th>4/22/20</th>
      <th>4/23/20</th>
      <th>4/24/20</th>
      <th>4/25/20</th>
      <th>4/26/20</th>
      <th>4/27/20</th>
      <th>4/28/20</th>
      <th>4/29/20</th>
      <th>4/30/20</th>
      <th>5/1/20</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0</td>
      <td>NaN</td>
      <td>Afghanistan</td>
      <td>33.0000</td>
      <td>65.0000</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>1176</td>
      <td>1279</td>
      <td>1351</td>
      <td>1463</td>
      <td>1531</td>
      <td>1703</td>
      <td>1828</td>
      <td>1939</td>
      <td>2171</td>
      <td>2335</td>
    </tr>
    <tr>
      <td>1</td>
      <td>NaN</td>
      <td>Albania</td>
      <td>41.1533</td>
      <td>20.1683</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>634</td>
      <td>663</td>
      <td>678</td>
      <td>712</td>
      <td>726</td>
      <td>736</td>
      <td>750</td>
      <td>766</td>
      <td>773</td>
      <td>782</td>
    </tr>
    <tr>
      <td>2</td>
      <td>NaN</td>
      <td>Algeria</td>
      <td>28.0339</td>
      <td>1.6596</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>2910</td>
      <td>3007</td>
      <td>3127</td>
      <td>3256</td>
      <td>3382</td>
      <td>3517</td>
      <td>3649</td>
      <td>3848</td>
      <td>4006</td>
      <td>4154</td>
    </tr>
    <tr>
      <td>3</td>
      <td>NaN</td>
      <td>Andorra</td>
      <td>42.5063</td>
      <td>1.5218</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>723</td>
      <td>723</td>
      <td>731</td>
      <td>738</td>
      <td>738</td>
      <td>743</td>
      <td>743</td>
      <td>743</td>
      <td>745</td>
      <td>745</td>
    </tr>
    <tr>
      <td>4</td>
      <td>NaN</td>
      <td>Angola</td>
      <td>-11.2027</td>
      <td>17.8739</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>25</td>
      <td>25</td>
      <td>25</td>
      <td>25</td>
      <td>26</td>
      <td>27</td>
      <td>27</td>
      <td>27</td>
      <td>27</td>
      <td>30</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 105 columns</p>
</div>



※ 緯度(Lat),経度(Long)

今回は、ProvinceとLat/Longはあまり必要でないので、列ごと消します


```python
confirmed = confirmed.drop(['Province/State','Lat','Long'],axis=1)
deaths = deaths.drop(['Province/State','Lat','Long'],axis=1)
recovered = recovered.drop(['Province/State','Lat','Long'],axis=1)
```

このデータを、Country/Regionごとに集計してみましょう


```python
confirmed = confirmed.groupby(confirmed["Country/Region"]).aggregate("sum")
deaths = deaths.groupby(deaths["Country/Region"]).aggregate("sum")
recovered = recovered.groupby(recovered["Country/Region"]).aggregate("sum")
```


```python
confirmed.head()
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>1/22/20</th>
      <th>1/23/20</th>
      <th>1/24/20</th>
      <th>1/25/20</th>
      <th>1/26/20</th>
      <th>1/27/20</th>
      <th>1/28/20</th>
      <th>1/29/20</th>
      <th>1/30/20</th>
      <th>1/31/20</th>
      <th>...</th>
      <th>4/22/20</th>
      <th>4/23/20</th>
      <th>4/24/20</th>
      <th>4/25/20</th>
      <th>4/26/20</th>
      <th>4/27/20</th>
      <th>4/28/20</th>
      <th>4/29/20</th>
      <th>4/30/20</th>
      <th>5/1/20</th>
    </tr>
    <tr>
      <th>Country/Region</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Afghanistan</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>1176</td>
      <td>1279</td>
      <td>1351</td>
      <td>1463</td>
      <td>1531</td>
      <td>1703</td>
      <td>1828</td>
      <td>1939</td>
      <td>2171</td>
      <td>2335</td>
    </tr>
    <tr>
      <td>Albania</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>634</td>
      <td>663</td>
      <td>678</td>
      <td>712</td>
      <td>726</td>
      <td>736</td>
      <td>750</td>
      <td>766</td>
      <td>773</td>
      <td>782</td>
    </tr>
    <tr>
      <td>Algeria</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>2910</td>
      <td>3007</td>
      <td>3127</td>
      <td>3256</td>
      <td>3382</td>
      <td>3517</td>
      <td>3649</td>
      <td>3848</td>
      <td>4006</td>
      <td>4154</td>
    </tr>
    <tr>
      <td>Andorra</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>723</td>
      <td>723</td>
      <td>731</td>
      <td>738</td>
      <td>738</td>
      <td>743</td>
      <td>743</td>
      <td>743</td>
      <td>745</td>
      <td>745</td>
    </tr>
    <tr>
      <td>Angola</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>25</td>
      <td>25</td>
      <td>25</td>
      <td>25</td>
      <td>26</td>
      <td>27</td>
      <td>27</td>
      <td>27</td>
      <td>27</td>
      <td>30</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 101 columns</p>
</div>



そして、次に、日付が特徴量となっていますが、今回は国を特徴量にしたいため、データを転置(行列入れ替え)します。


```python
confirmed = confirmed.T
deaths = deaths.T
recovered = recovered.T
```


```python
confirmed.head()
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Country/Region</th>
      <th>Afghanistan</th>
      <th>Albania</th>
      <th>Algeria</th>
      <th>Andorra</th>
      <th>Angola</th>
      <th>Antigua and Barbuda</th>
      <th>Argentina</th>
      <th>Armenia</th>
      <th>Australia</th>
      <th>Austria</th>
      <th>...</th>
      <th>United Kingdom</th>
      <th>Uruguay</th>
      <th>Uzbekistan</th>
      <th>Venezuela</th>
      <th>Vietnam</th>
      <th>West Bank and Gaza</th>
      <th>Western Sahara</th>
      <th>Yemen</th>
      <th>Zambia</th>
      <th>Zimbabwe</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1/22/20</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <td>1/23/20</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <td>1/24/20</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <td>1/25/20</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <td>1/26/20</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>4</td>
      <td>0</td>
      <td>...</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 187 columns</p>
</div>



ここまでで、データの下準備は一旦整いました。計算に移っていきます。

まず、感染者数の増加数の推移をみていきましょう  
ここで必要になってくるデータは当該日とその前日の感染者数の差です。


```python
new_cases = confirmed.copy()
```


```python
for day in range(1,len(confirmed)):
    new_cases.iloc[day] = confirmed.iloc[day] - confirmed.iloc[day - 1]
```

直近の10日分のデータを見ます


```python
new_cases.tail(10)
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Country/Region</th>
      <th>Afghanistan</th>
      <th>Albania</th>
      <th>Algeria</th>
      <th>Andorra</th>
      <th>Angola</th>
      <th>Antigua and Barbuda</th>
      <th>Argentina</th>
      <th>Armenia</th>
      <th>Australia</th>
      <th>Austria</th>
      <th>...</th>
      <th>United Kingdom</th>
      <th>Uruguay</th>
      <th>Uzbekistan</th>
      <th>Venezuela</th>
      <th>Vietnam</th>
      <th>West Bank and Gaza</th>
      <th>Western Sahara</th>
      <th>Yemen</th>
      <th>Zambia</th>
      <th>Zimbabwe</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>4/22/20</td>
      <td>84</td>
      <td>25</td>
      <td>99</td>
      <td>6</td>
      <td>1</td>
      <td>1</td>
      <td>113</td>
      <td>72</td>
      <td>7</td>
      <td>52</td>
      <td>...</td>
      <td>4466</td>
      <td>8</td>
      <td>38</td>
      <td>3</td>
      <td>0</td>
      <td>8</td>
      <td>0</td>
      <td>0</td>
      <td>4</td>
      <td>0</td>
    </tr>
    <tr>
      <td>4/23/20</td>
      <td>103</td>
      <td>29</td>
      <td>97</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>291</td>
      <td>50</td>
      <td>10</td>
      <td>77</td>
      <td>...</td>
      <td>4608</td>
      <td>14</td>
      <td>42</td>
      <td>23</td>
      <td>0</td>
      <td>6</td>
      <td>0</td>
      <td>0</td>
      <td>2</td>
      <td>0</td>
    </tr>
    <tr>
      <td>4/24/20</td>
      <td>72</td>
      <td>15</td>
      <td>120</td>
      <td>8</td>
      <td>0</td>
      <td>0</td>
      <td>172</td>
      <td>73</td>
      <td>15</td>
      <td>69</td>
      <td>...</td>
      <td>5394</td>
      <td>6</td>
      <td>46</td>
      <td>7</td>
      <td>2</td>
      <td>4</td>
      <td>0</td>
      <td>0</td>
      <td>8</td>
      <td>1</td>
    </tr>
    <tr>
      <td>4/25/20</td>
      <td>112</td>
      <td>34</td>
      <td>129</td>
      <td>7</td>
      <td>0</td>
      <td>0</td>
      <td>173</td>
      <td>81</td>
      <td>17</td>
      <td>77</td>
      <td>...</td>
      <td>4929</td>
      <td>33</td>
      <td>58</td>
      <td>5</td>
      <td>0</td>
      <td>-142</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>2</td>
    </tr>
    <tr>
      <td>4/26/20</td>
      <td>68</td>
      <td>14</td>
      <td>126</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>112</td>
      <td>69</td>
      <td>20</td>
      <td>77</td>
      <td>...</td>
      <td>4468</td>
      <td>10</td>
      <td>7</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>4</td>
      <td>0</td>
    </tr>
    <tr>
      <td>4/27/20</td>
      <td>172</td>
      <td>10</td>
      <td>135</td>
      <td>5</td>
      <td>1</td>
      <td>0</td>
      <td>111</td>
      <td>62</td>
      <td>7</td>
      <td>49</td>
      <td>...</td>
      <td>4311</td>
      <td>14</td>
      <td>35</td>
      <td>4</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
    </tr>
    <tr>
      <td>4/28/20</td>
      <td>125</td>
      <td>14</td>
      <td>132</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>124</td>
      <td>59</td>
      <td>23</td>
      <td>83</td>
      <td>...</td>
      <td>4002</td>
      <td>5</td>
      <td>35</td>
      <td>0</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>0</td>
      <td>7</td>
      <td>0</td>
    </tr>
    <tr>
      <td>4/29/20</td>
      <td>111</td>
      <td>16</td>
      <td>199</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>158</td>
      <td>65</td>
      <td>8</td>
      <td>45</td>
      <td>...</td>
      <td>4091</td>
      <td>5</td>
      <td>63</td>
      <td>2</td>
      <td>0</td>
      <td>1</td>
      <td>0</td>
      <td>5</td>
      <td>2</td>
      <td>0</td>
    </tr>
    <tr>
      <td>4/30/20</td>
      <td>232</td>
      <td>7</td>
      <td>158</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>143</td>
      <td>134</td>
      <td>14</td>
      <td>50</td>
      <td>...</td>
      <td>6040</td>
      <td>13</td>
      <td>37</td>
      <td>2</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>9</td>
      <td>8</td>
    </tr>
    <tr>
      <td>5/1/20</td>
      <td>164</td>
      <td>9</td>
      <td>148</td>
      <td>0</td>
      <td>3</td>
      <td>1</td>
      <td>104</td>
      <td>82</td>
      <td>12</td>
      <td>79</td>
      <td>...</td>
      <td>6204</td>
      <td>5</td>
      <td>47</td>
      <td>2</td>
      <td>0</td>
      <td>9</td>
      <td>0</td>
      <td>1</td>
      <td>3</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
<p>10 rows × 187 columns</p>
</div>



感染者データと比べてみましょう


```python
confirmed.tail(10)
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Country/Region</th>
      <th>Afghanistan</th>
      <th>Albania</th>
      <th>Algeria</th>
      <th>Andorra</th>
      <th>Angola</th>
      <th>Antigua and Barbuda</th>
      <th>Argentina</th>
      <th>Armenia</th>
      <th>Australia</th>
      <th>Austria</th>
      <th>...</th>
      <th>United Kingdom</th>
      <th>Uruguay</th>
      <th>Uzbekistan</th>
      <th>Venezuela</th>
      <th>Vietnam</th>
      <th>West Bank and Gaza</th>
      <th>Western Sahara</th>
      <th>Yemen</th>
      <th>Zambia</th>
      <th>Zimbabwe</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>4/22/20</td>
      <td>1176</td>
      <td>634</td>
      <td>2910</td>
      <td>723</td>
      <td>25</td>
      <td>24</td>
      <td>3144</td>
      <td>1473</td>
      <td>6652</td>
      <td>14925</td>
      <td>...</td>
      <td>134638</td>
      <td>543</td>
      <td>1716</td>
      <td>288</td>
      <td>268</td>
      <td>474</td>
      <td>6</td>
      <td>1</td>
      <td>74</td>
      <td>28</td>
    </tr>
    <tr>
      <td>4/23/20</td>
      <td>1279</td>
      <td>663</td>
      <td>3007</td>
      <td>723</td>
      <td>25</td>
      <td>24</td>
      <td>3435</td>
      <td>1523</td>
      <td>6662</td>
      <td>15002</td>
      <td>...</td>
      <td>139246</td>
      <td>557</td>
      <td>1758</td>
      <td>311</td>
      <td>268</td>
      <td>480</td>
      <td>6</td>
      <td>1</td>
      <td>76</td>
      <td>28</td>
    </tr>
    <tr>
      <td>4/24/20</td>
      <td>1351</td>
      <td>678</td>
      <td>3127</td>
      <td>731</td>
      <td>25</td>
      <td>24</td>
      <td>3607</td>
      <td>1596</td>
      <td>6677</td>
      <td>15071</td>
      <td>...</td>
      <td>144640</td>
      <td>563</td>
      <td>1804</td>
      <td>318</td>
      <td>270</td>
      <td>484</td>
      <td>6</td>
      <td>1</td>
      <td>84</td>
      <td>29</td>
    </tr>
    <tr>
      <td>4/25/20</td>
      <td>1463</td>
      <td>712</td>
      <td>3256</td>
      <td>738</td>
      <td>25</td>
      <td>24</td>
      <td>3780</td>
      <td>1677</td>
      <td>6694</td>
      <td>15148</td>
      <td>...</td>
      <td>149569</td>
      <td>596</td>
      <td>1862</td>
      <td>323</td>
      <td>270</td>
      <td>342</td>
      <td>6</td>
      <td>1</td>
      <td>84</td>
      <td>31</td>
    </tr>
    <tr>
      <td>4/26/20</td>
      <td>1531</td>
      <td>726</td>
      <td>3382</td>
      <td>738</td>
      <td>26</td>
      <td>24</td>
      <td>3892</td>
      <td>1746</td>
      <td>6714</td>
      <td>15225</td>
      <td>...</td>
      <td>154037</td>
      <td>606</td>
      <td>1869</td>
      <td>325</td>
      <td>270</td>
      <td>342</td>
      <td>6</td>
      <td>1</td>
      <td>88</td>
      <td>31</td>
    </tr>
    <tr>
      <td>4/27/20</td>
      <td>1703</td>
      <td>736</td>
      <td>3517</td>
      <td>743</td>
      <td>27</td>
      <td>24</td>
      <td>4003</td>
      <td>1808</td>
      <td>6721</td>
      <td>15274</td>
      <td>...</td>
      <td>158348</td>
      <td>620</td>
      <td>1904</td>
      <td>329</td>
      <td>270</td>
      <td>342</td>
      <td>6</td>
      <td>1</td>
      <td>88</td>
      <td>32</td>
    </tr>
    <tr>
      <td>4/28/20</td>
      <td>1828</td>
      <td>750</td>
      <td>3649</td>
      <td>743</td>
      <td>27</td>
      <td>24</td>
      <td>4127</td>
      <td>1867</td>
      <td>6744</td>
      <td>15357</td>
      <td>...</td>
      <td>162350</td>
      <td>625</td>
      <td>1939</td>
      <td>329</td>
      <td>270</td>
      <td>343</td>
      <td>6</td>
      <td>1</td>
      <td>95</td>
      <td>32</td>
    </tr>
    <tr>
      <td>4/29/20</td>
      <td>1939</td>
      <td>766</td>
      <td>3848</td>
      <td>743</td>
      <td>27</td>
      <td>24</td>
      <td>4285</td>
      <td>1932</td>
      <td>6752</td>
      <td>15402</td>
      <td>...</td>
      <td>166441</td>
      <td>630</td>
      <td>2002</td>
      <td>331</td>
      <td>270</td>
      <td>344</td>
      <td>6</td>
      <td>6</td>
      <td>97</td>
      <td>32</td>
    </tr>
    <tr>
      <td>4/30/20</td>
      <td>2171</td>
      <td>773</td>
      <td>4006</td>
      <td>745</td>
      <td>27</td>
      <td>24</td>
      <td>4428</td>
      <td>2066</td>
      <td>6766</td>
      <td>15452</td>
      <td>...</td>
      <td>172481</td>
      <td>643</td>
      <td>2039</td>
      <td>333</td>
      <td>270</td>
      <td>344</td>
      <td>6</td>
      <td>6</td>
      <td>106</td>
      <td>40</td>
    </tr>
    <tr>
      <td>5/1/20</td>
      <td>2335</td>
      <td>782</td>
      <td>4154</td>
      <td>745</td>
      <td>30</td>
      <td>25</td>
      <td>4532</td>
      <td>2148</td>
      <td>6778</td>
      <td>15531</td>
      <td>...</td>
      <td>178685</td>
      <td>648</td>
      <td>2086</td>
      <td>335</td>
      <td>270</td>
      <td>353</td>
      <td>6</td>
      <td>7</td>
      <td>109</td>
      <td>40</td>
    </tr>
  </tbody>
</table>
<p>10 rows × 187 columns</p>
</div>



例えば、AfghanistanやAlgeriaやArgentinaやUnited Kingdomは、感染者数の絶対数も多いですが、新規感染者数も依然多いということが分かります。

new_casesでは、感染者数の日別の"増加数"を見ましたが、次に"増加率"を見ましょう。  
(当該日の増加数 / 前日の感染者数) * 100 で増加率を出すことが出来ます


```python
growth_rate = confirmed.copy()

for day in range(1,len(growth_rate)):
    growth_rate.iloc[day] = ( new_cases.iloc[day] / confirmed.iloc[day-1] ) * 100
```


```python
growth_rate.tail(10)
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Country/Region</th>
      <th>Afghanistan</th>
      <th>Albania</th>
      <th>Algeria</th>
      <th>Andorra</th>
      <th>Angola</th>
      <th>Antigua and Barbuda</th>
      <th>Argentina</th>
      <th>Armenia</th>
      <th>Australia</th>
      <th>Austria</th>
      <th>...</th>
      <th>United Kingdom</th>
      <th>Uruguay</th>
      <th>Uzbekistan</th>
      <th>Venezuela</th>
      <th>Vietnam</th>
      <th>West Bank and Gaza</th>
      <th>Western Sahara</th>
      <th>Yemen</th>
      <th>Zambia</th>
      <th>Zimbabwe</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>4/22/20</td>
      <td>7.692308</td>
      <td>4.105090</td>
      <td>3.521878</td>
      <td>0.836820</td>
      <td>4.166667</td>
      <td>4.347826</td>
      <td>3.728143</td>
      <td>5.139186</td>
      <td>0.105342</td>
      <td>0.349627</td>
      <td>...</td>
      <td>3.430845</td>
      <td>1.495327</td>
      <td>2.264601</td>
      <td>1.052632</td>
      <td>0.000000</td>
      <td>1.716738</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>5.714286</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/23/20</td>
      <td>8.758503</td>
      <td>4.574132</td>
      <td>3.333333</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>9.255725</td>
      <td>3.394433</td>
      <td>0.150331</td>
      <td>0.515913</td>
      <td>...</td>
      <td>3.422511</td>
      <td>2.578269</td>
      <td>2.447552</td>
      <td>7.986111</td>
      <td>0.000000</td>
      <td>1.265823</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>2.702703</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/24/20</td>
      <td>5.629398</td>
      <td>2.262443</td>
      <td>3.990688</td>
      <td>1.106501</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>5.007278</td>
      <td>4.793171</td>
      <td>0.225158</td>
      <td>0.459939</td>
      <td>...</td>
      <td>3.873720</td>
      <td>1.077199</td>
      <td>2.616610</td>
      <td>2.250804</td>
      <td>0.746269</td>
      <td>0.833333</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>10.526316</td>
      <td>3.571429</td>
    </tr>
    <tr>
      <td>4/25/20</td>
      <td>8.290155</td>
      <td>5.014749</td>
      <td>4.125360</td>
      <td>0.957592</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>4.796230</td>
      <td>5.075188</td>
      <td>0.254605</td>
      <td>0.510915</td>
      <td>...</td>
      <td>3.407771</td>
      <td>5.861456</td>
      <td>3.215078</td>
      <td>1.572327</td>
      <td>0.000000</td>
      <td>-29.338843</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>6.896552</td>
    </tr>
    <tr>
      <td>4/26/20</td>
      <td>4.647984</td>
      <td>1.966292</td>
      <td>3.869779</td>
      <td>0.000000</td>
      <td>4.000000</td>
      <td>0.000000</td>
      <td>2.962963</td>
      <td>4.114490</td>
      <td>0.298775</td>
      <td>0.508318</td>
      <td>...</td>
      <td>2.987250</td>
      <td>1.677852</td>
      <td>0.375940</td>
      <td>0.619195</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>4.761905</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/27/20</td>
      <td>11.234487</td>
      <td>1.377410</td>
      <td>3.991721</td>
      <td>0.677507</td>
      <td>3.846154</td>
      <td>0.000000</td>
      <td>2.852004</td>
      <td>3.550974</td>
      <td>0.104260</td>
      <td>0.321839</td>
      <td>...</td>
      <td>2.798678</td>
      <td>2.310231</td>
      <td>1.872659</td>
      <td>1.230769</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>3.225806</td>
    </tr>
    <tr>
      <td>4/28/20</td>
      <td>7.339988</td>
      <td>1.902174</td>
      <td>3.753199</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>3.097677</td>
      <td>3.263274</td>
      <td>0.342211</td>
      <td>0.543407</td>
      <td>...</td>
      <td>2.527345</td>
      <td>0.806452</td>
      <td>1.838235</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.292398</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>7.954545</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/29/20</td>
      <td>6.072210</td>
      <td>2.133333</td>
      <td>5.453549</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>3.828447</td>
      <td>3.481521</td>
      <td>0.118624</td>
      <td>0.293026</td>
      <td>...</td>
      <td>2.519864</td>
      <td>0.800000</td>
      <td>3.249097</td>
      <td>0.607903</td>
      <td>0.000000</td>
      <td>0.291545</td>
      <td>0.0</td>
      <td>500.000000</td>
      <td>2.105263</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/30/20</td>
      <td>11.964930</td>
      <td>0.913838</td>
      <td>4.106029</td>
      <td>0.269179</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>3.337223</td>
      <td>6.935818</td>
      <td>0.207346</td>
      <td>0.324633</td>
      <td>...</td>
      <td>3.628914</td>
      <td>2.063492</td>
      <td>1.848152</td>
      <td>0.604230</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.0</td>
      <td>0.000000</td>
      <td>9.278351</td>
      <td>25.000000</td>
    </tr>
    <tr>
      <td>5/1/20</td>
      <td>7.554123</td>
      <td>1.164295</td>
      <td>3.694458</td>
      <td>0.000000</td>
      <td>11.111111</td>
      <td>4.166667</td>
      <td>2.348690</td>
      <td>3.969022</td>
      <td>0.177357</td>
      <td>0.511261</td>
      <td>...</td>
      <td>3.596918</td>
      <td>0.777605</td>
      <td>2.305051</td>
      <td>0.600601</td>
      <td>0.000000</td>
      <td>2.616279</td>
      <td>0.0</td>
      <td>16.666667</td>
      <td>2.830189</td>
      <td>0.000000</td>
    </tr>
  </tbody>
</table>
<p>10 rows × 187 columns</p>
</div>



さて、感染者数(confirmed)はいわゆる累計の数なので、一旦ここで、現在進行形の感染者数(Active)を出しましょう。  
【感染者数(confirmed)】から【死者数(deaths)と回復者数(recovered)】を引くと、【現在進行形の感染者数(Active)】が計算できそうです。


```python
active_cases = confirmed.copy()

for day in range(0,len(confirmed)):
    active_cases.iloc[day] = confirmed.iloc[day] - deaths.iloc[day] - recovered.iloc[day]
```

そして、この現在進行形の感染者数active_casesのデータを利用して、再度、現在進行形の感染者数の増加率を調べましょう。  
これを調べることによって、収束していそうかどうかが分かりそうです。


```python
overall_growth_rate = confirmed.copy()

for day in range(0,len(confirmed)):
    overall_growth_rate.iloc[day] = ((active_cases.iloc[day] - active_cases.iloc[day-1]) / active_cases.iloc[day-1]) * 100
```


```python
overall_growth_rate.tail(10)
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Country/Region</th>
      <th>Afghanistan</th>
      <th>Albania</th>
      <th>Algeria</th>
      <th>Andorra</th>
      <th>Angola</th>
      <th>Antigua and Barbuda</th>
      <th>Argentina</th>
      <th>Armenia</th>
      <th>Australia</th>
      <th>Austria</th>
      <th>...</th>
      <th>United Kingdom</th>
      <th>Uruguay</th>
      <th>Uzbekistan</th>
      <th>Venezuela</th>
      <th>Vietnam</th>
      <th>West Bank and Gaza</th>
      <th>Western Sahara</th>
      <th>Yemen</th>
      <th>Zambia</th>
      <th>Zimbabwe</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>4/22/20</td>
      <td>7.064018</td>
      <td>5.462185</td>
      <td>2.920284</td>
      <td>-5.276382</td>
      <td>6.250000</td>
      <td>-15.384615</td>
      <td>3.718200</td>
      <td>6.250000</td>
      <td>-12.214551</td>
      <td>-9.498681</td>
      <td>...</td>
      <td>3.270797</td>
      <td>-1.895735</td>
      <td>-4.258555</td>
      <td>-1.265823</td>
      <td>-13.461538</td>
      <td>2.046036</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>12.500000</td>
      <td>-4.347826</td>
    </tr>
    <tr>
      <td>4/23/20</td>
      <td>9.072165</td>
      <td>0.000000</td>
      <td>-4.524540</td>
      <td>-6.366048</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>10.896226</td>
      <td>2.941176</td>
      <td>-6.836056</td>
      <td>-9.750567</td>
      <td>...</td>
      <td>3.411790</td>
      <td>-7.729469</td>
      <td>-5.480540</td>
      <td>12.179487</td>
      <td>-2.222222</td>
      <td>-3.759398</td>
      <td>-83.333333</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/24/20</td>
      <td>5.860113</td>
      <td>2.390438</td>
      <td>4.738956</td>
      <td>-1.699717</td>
      <td>0.000000</td>
      <td>-9.090909</td>
      <td>4.423650</td>
      <td>0.119048</td>
      <td>-5.064935</td>
      <td>-4.199569</td>
      <td>...</td>
      <td>3.743980</td>
      <td>-4.712042</td>
      <td>-1.260504</td>
      <td>0.571429</td>
      <td>13.636364</td>
      <td>1.041667</td>
      <td>0.000000</td>
      <td>-100.000000</td>
      <td>22.222222</td>
      <td>4.545455</td>
    </tr>
    <tr>
      <td>4/25/20</td>
      <td>9.642857</td>
      <td>9.727626</td>
      <td>4.141104</td>
      <td>2.017291</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>4.480652</td>
      <td>0.594530</td>
      <td>-15.321477</td>
      <td>-5.994755</td>
      <td>...</td>
      <td>3.332975</td>
      <td>16.483516</td>
      <td>-2.382979</td>
      <td>2.840909</td>
      <td>-10.000000</td>
      <td>-36.082474</td>
      <td>0.000000</td>
      <td>NaN</td>
      <td>0.000000</td>
      <td>8.695652</td>
    </tr>
    <tr>
      <td>4/26/20</td>
      <td>3.745928</td>
      <td>2.127660</td>
      <td>6.701031</td>
      <td>0.000000</td>
      <td>5.882353</td>
      <td>0.000000</td>
      <td>1.091618</td>
      <td>4.609929</td>
      <td>-11.954766</td>
      <td>-4.304504</td>
      <td>...</td>
      <td>3.232666</td>
      <td>1.886792</td>
      <td>-6.538797</td>
      <td>-1.657459</td>
      <td>0.000000</td>
      <td>3.629032</td>
      <td>0.000000</td>
      <td>NaN</td>
      <td>-2.272727</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/27/20</td>
      <td>11.930926</td>
      <td>-0.694444</td>
      <td>5.383023</td>
      <td>-10.169492</td>
      <td>5.555556</td>
      <td>0.000000</td>
      <td>2.815272</td>
      <td>5.197740</td>
      <td>-3.669725</td>
      <td>-1.582674</td>
      <td>...</td>
      <td>3.051680</td>
      <td>1.388889</td>
      <td>-6.343284</td>
      <td>-0.561798</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>NaN</td>
      <td>0.000000</td>
      <td>-8.000000</td>
    </tr>
    <tr>
      <td>4/28/20</td>
      <td>8.134642</td>
      <td>1.048951</td>
      <td>2.226588</td>
      <td>-4.402516</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>3.450863</td>
      <td>4.296455</td>
      <td>-5.714286</td>
      <td>-6.559458</td>
      <td>...</td>
      <td>2.318102</td>
      <td>-1.369863</td>
      <td>-6.474104</td>
      <td>0.000000</td>
      <td>6.666667</td>
      <td>5.058366</td>
      <td>0.000000</td>
      <td>NaN</td>
      <td>16.279070</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/29/20</td>
      <td>5.512322</td>
      <td>-2.768166</td>
      <td>9.032671</td>
      <td>-8.552632</td>
      <td>-5.263158</td>
      <td>0.000000</td>
      <td>4.387237</td>
      <td>3.192585</td>
      <td>-4.444444</td>
      <td>-7.472826</td>
      <td>...</td>
      <td>2.386758</td>
      <td>-6.018519</td>
      <td>-4.472843</td>
      <td>1.129944</td>
      <td>0.000000</td>
      <td>0.370370</td>
      <td>0.000000</td>
      <td>inf</td>
      <td>-20.000000</td>
      <td>0.000000</td>
    </tr>
    <tr>
      <td>4/30/20</td>
      <td>13.521819</td>
      <td>-3.202847</td>
      <td>4.406580</td>
      <td>-15.467626</td>
      <td>0.000000</td>
      <td>0.000000</td>
      <td>2.605071</td>
      <td>10.279441</td>
      <td>-1.585624</td>
      <td>-4.013705</td>
      <td>...</td>
      <td>3.845988</td>
      <td>2.955665</td>
      <td>0.000000</td>
      <td>-2.234637</td>
      <td>6.250000</td>
      <td>-1.845018</td>
      <td>0.000000</td>
      <td>-40.000000</td>
      <td>20.000000</td>
      <td>34.782609</td>
    </tr>
    <tr>
      <td>5/1/20</td>
      <td>5.955604</td>
      <td>-3.308824</td>
      <td>5.796286</td>
      <td>-0.425532</td>
      <td>-5.555556</td>
      <td>-30.000000</td>
      <td>2.064997</td>
      <td>2.986425</td>
      <td>-2.255639</td>
      <td>-6.578276</td>
      <td>...</td>
      <td>3.750518</td>
      <td>-6.220096</td>
      <td>-3.567447</td>
      <td>1.142857</td>
      <td>0.000000</td>
      <td>3.383459</td>
      <td>0.000000</td>
      <td>33.333333</td>
      <td>-33.333333</td>
      <td>0.000000</td>
    </tr>
  </tbody>
</table>
<p>10 rows × 187 columns</p>
</div>



## 直近10日(2020/04/22-05/01)の現在進行形の感染者数の増加率 (中国・イタリア・アメリカ・日本)

※ ちょこっと、ここの部分にオリジナルの加えています。

まず、コロナ発症国と考えられている中国は、最近収束しているみたいなので、中国の直近10日のデータを見てみましょう


```python
overall_growth_rate['China'].tail(10)
```




    4/22/20   -3.314528
    4/23/20   -7.731583
    4/24/20   -8.774704
    4/25/20   -4.852686
    4/26/20   -9.107468
    4/27/20   -9.118236
    4/28/20   -2.866593
    4/29/20   -5.448354
    4/30/20   -4.441777
    5/1/20    -5.904523
    Name: China, dtype: float64



増加率マイナス、つまり現在進行形の感染者数が減り続けている　→　収束に向かっていることが分かります。

次に、イタリアはどうでしょうか。


```python
overall_growth_rate['Italy'].tail(10)
```




    4/22/20   -0.009284
    4/23/20   -0.790165
    4/24/20   -0.300427
    4/25/20   -0.638336
    4/26/20    0.241859
    4/27/20   -0.273319
    4/28/20   -0.574599
    4/29/20   -0.520888
    4/30/20   -2.967790
    5/1/20    -0.598714
    Name: Italy, dtype: float64



1%未満の減少率なので微減ですが、増えてはいません。


```python
overall_growth_rate['US'].tail(10)
```




    4/22/20    3.470050
    4/23/20    3.307839
    4/24/20    2.102556
    4/25/20    3.874078
    4/26/20    2.536775
    4/27/20    2.064644
    4/28/20    2.166569
    4/29/20    2.377575
    4/30/20   -0.668941
    5/1/20     2.583283
    Name: US, dtype: float64



アメリカは、まだ数%ずつ増加しています。


```python
overall_growth_rate['Japan'].tail(10)
```




    4/22/20    2.512198
    4/23/20    6.794937
    4/24/20    3.868765
    4/25/20    2.382691
    4/26/20    0.401248
    4/27/20    5.408526
    4/28/20   -3.589182
    4/29/20   -2.875120
    4/30/20    0.755803
    5/1/20    -2.884444
    Name: Japan, dtype: float64



日本も、ちょっとずつ直近で減ってきた感じはありますが、増加傾向にあります。

日本は、せっかくなので、直近10日の増加率の平均を見てみましょう。


```python
overall_growth_rate['Japan'].tail(10).mean()
```




    1.277542288600591



1%程度ですが、増加傾向にある感じです。まぁ、日本はまだ感染者数も少ないので、比較的抑えられているといえるかもしれません。

ここから可視化(visualization)を交えていきます。

最初に死亡率を見ていきましょう。死亡率は、地域ごとのコロナの深刻さを表す指標となるので重要です。

まず、死亡率のデータフレームは、先ほどの手順とほぼ同様です。死亡率は、死亡者/感染者 で表されます。


```python
death_rate = confirmed.copy()
```


```python
for day in range(0,len(confirmed)):
    death_rate.iloc[day] = (deaths.iloc[day] / confirmed.iloc[day]) * 100
```

次に、必要な必要なベッド台数(逆に、どれだけ不足が生じそうか)を算出します。  
感染者のうち病院が必要な人の割合である入院率"hospitalization"を用います。これは、正しい数値は、分からないので、一旦仮の数値(ここでは、0.05)を用います。好きな数字に変えても大丈夫です。このレクチャーでは、分析・計算手法にフォーカスするため、一旦正確さは置いておきます。

※ちなみに、入院率は、コロナ陽性かつ入院が必要な人のことで、残りの95%は陽性であっても、入院(ベッド)は必要ではないとみなしています。


```python
hospitalization_rate_estimate = 0.05
```


```python
hospitalization_needed = confirmed.copy()
```


```python
for day in range(0,len(confirmed)):
    hospitalization_needed.iloc[day] = active_cases.iloc[day] * hospitalization_rate_estimate
```


```python
hospitalization_needed.tail()
```




<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>Country/Region</th>
      <th>Afghanistan</th>
      <th>Albania</th>
      <th>Algeria</th>
      <th>Andorra</th>
      <th>Angola</th>
      <th>Antigua and Barbuda</th>
      <th>Argentina</th>
      <th>Armenia</th>
      <th>Australia</th>
      <th>Austria</th>
      <th>...</th>
      <th>United Kingdom</th>
      <th>Uruguay</th>
      <th>Uzbekistan</th>
      <th>Venezuela</th>
      <th>Vietnam</th>
      <th>West Bank and Gaza</th>
      <th>Western Sahara</th>
      <th>Yemen</th>
      <th>Zambia</th>
      <th>Zimbabwe</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>4/27/20</td>
      <td>71.30</td>
      <td>14.30</td>
      <td>76.35</td>
      <td>15.90</td>
      <td>0.95</td>
      <td>0.50</td>
      <td>133.30</td>
      <td>46.55</td>
      <td>52.50</td>
      <td>118.15</td>
      <td>...</td>
      <td>6654.15</td>
      <td>10.95</td>
      <td>50.20</td>
      <td>8.85</td>
      <td>2.25</td>
      <td>12.85</td>
      <td>0.05</td>
      <td>0.00</td>
      <td>2.15</td>
      <td>1.15</td>
    </tr>
    <tr>
      <td>4/28/20</td>
      <td>77.10</td>
      <td>14.45</td>
      <td>78.05</td>
      <td>15.20</td>
      <td>0.95</td>
      <td>0.50</td>
      <td>137.90</td>
      <td>48.55</td>
      <td>49.50</td>
      <td>110.40</td>
      <td>...</td>
      <td>6808.40</td>
      <td>10.80</td>
      <td>46.95</td>
      <td>8.85</td>
      <td>2.40</td>
      <td>13.50</td>
      <td>0.05</td>
      <td>0.00</td>
      <td>2.50</td>
      <td>1.15</td>
    </tr>
    <tr>
      <td>4/29/20</td>
      <td>81.35</td>
      <td>14.05</td>
      <td>85.10</td>
      <td>13.90</td>
      <td>0.90</td>
      <td>0.50</td>
      <td>143.95</td>
      <td>50.10</td>
      <td>47.30</td>
      <td>102.15</td>
      <td>...</td>
      <td>6970.90</td>
      <td>10.15</td>
      <td>44.85</td>
      <td>8.95</td>
      <td>2.40</td>
      <td>13.55</td>
      <td>0.05</td>
      <td>0.25</td>
      <td>2.00</td>
      <td>1.15</td>
    </tr>
    <tr>
      <td>4/30/20</td>
      <td>92.35</td>
      <td>13.60</td>
      <td>88.85</td>
      <td>11.75</td>
      <td>0.90</td>
      <td>0.50</td>
      <td>147.70</td>
      <td>55.25</td>
      <td>46.55</td>
      <td>98.05</td>
      <td>...</td>
      <td>7239.00</td>
      <td>10.45</td>
      <td>44.85</td>
      <td>8.75</td>
      <td>2.55</td>
      <td>13.30</td>
      <td>0.05</td>
      <td>0.15</td>
      <td>2.40</td>
      <td>1.55</td>
    </tr>
    <tr>
      <td>5/1/20</td>
      <td>97.85</td>
      <td>13.15</td>
      <td>94.00</td>
      <td>11.70</td>
      <td>0.85</td>
      <td>0.35</td>
      <td>150.75</td>
      <td>56.90</td>
      <td>45.50</td>
      <td>91.60</td>
      <td>...</td>
      <td>7510.50</td>
      <td>9.80</td>
      <td>43.25</td>
      <td>8.85</td>
      <td>2.55</td>
      <td>13.75</td>
      <td>0.05</td>
      <td>0.20</td>
      <td>1.60</td>
      <td>1.55</td>
    </tr>
  </tbody>
</table>
<p>5 rows × 187 columns</p>
</div>



一旦、ここで国をひとつ取り出しても、どれだけ深刻かわかりづらいため、一旦直近5日の平均を見ます。


```python
hospitalization_needed.tail().mean().mean()
```




    532.5691978609626



直近５日のすべての国の必要ベッド数の平均です。ばらつきも当然あるため、あまり理想的な参考値ではないですが、一旦これを参考とします。  
イタリアの直近5日の平均を見てみましょう。


```python
hospitalization_needed['Italy'].tail().mean()
```




    5181.6900000000005



つまり、ざっと世界中の平均の10倍という数値が出ました。かなり深刻です。

可視化します。ただ、国が多すぎるので、今回は、いくつか任意の国を選びましょう。ここでは、イタリア、アメリカ、中国、日本、ロシア スペインを選びます。


```python
countries = ['Italy','US',"China","Japan","Russia","Spain"]
```


```python
ax = plt.subplot()
ax.set_facecolor("black")
ax.figure.set_facecolor("#121212")
ax.tick_params(axis="x",colors="white")
ax.tick_params(axis="y",colors="white")
ax.set_title("covid-19 confirmed by countries",color="white")

for country in countries:
    confirmed[country].plot(label=country)
plt.legend(loc="upper left")
plt.show()
```


![output_71_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/1a968056-7172-fb02-9a48-bf2092d8e0d8.png)



USが3月末ぐらいから著しく感染者が増えていますね。  
死者数を見ましょう。

グラフの形はあまり変わらず、感染者数に伴っているような感じです。

次に、感染者の増加率をプロットしてみましょう。

ただし、今度は、バーチャートでプロットします。また、バーチャートではあまりひとつの図にグラフが重なりすぎると、可視性が低くなるため別々に表示します。  


```python
for country in countries:
    ax = plt.subplot()
    ax.set_facecolor("black")
    ax.figure.set_facecolor("#121212")
    ax.tick_params(axis="x",colors="white")
    ax.tick_params(axis="y",colors="white")
    ax.set_title(f"covid-19 confirmed growth rate {country}",color="white")
    growth_rate[country].plot.bar() 
    plt.show()
```


![output_76_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/2f37e4e5-8340-8907-262a-5d6486f328c0.png)




![output_76_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/db01e7b8-4d25-4c3e-f74e-8292325164dd.png)



![output_76_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/b0d38c2d-e53f-dd00-9317-c636fd9cd33f.png)



![output_76_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/3a839c96-7a50-a7d2-81fd-7f26df46d57a.png)



![output_76_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/03561288-c89d-34a8-8328-945d88c062b0.png)


![output_76_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/56c2fee4-53ec-4245-cc6c-673f615f5580.png)


同じ要領で死者数の感染数、死亡率(※上記は、"感染者の増加率"でこちらは"死亡率"です)も見ましょう。


```python
ax = plt.subplot()
ax.set_facecolor("black")
ax.figure.set_facecolor("#121212")
ax.tick_params(axis="x",colors="white")
ax.tick_params(axis="y",colors="white")
ax.set_title("covid-19 deaths by countries",color="white")

for country in countries:
    deaths[country].plot(label=country)
plt.legend(loc="upper left")
plt.show()
```


![output_78_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/fbb3f92d-36d6-8b37-966d-a1d75d4586ed.png)



```python
for country in countries:
    ax = plt.subplot()
    ax.set_facecolor("black")
    ax.figure.set_facecolor("#121212")
    ax.tick_params(axis="x",colors="white")
    ax.tick_params(axis="y",colors="white")
    ax.set_title(f"covid-19 deaths rate {country}",color="white")
    death_rate[country].plot.bar() 
    plt.show()
```


![output_79_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/73930a7d-a0c6-da62-d542-64fdddc1899c.png)



![output_79_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/33d11958-8dce-daa6-1d0a-705052a97ffd.png)



![output_79_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/d5a64b68-243b-5769-8cd8-a742e77737b2.png)



![output_79_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/764e6ec9-cecc-52f0-ade6-e2bf47e1ef1d.png)



![output_79_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/d52b5b4c-a51c-5d33-b279-a137c7ed4d66.png)



![output_79_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/e7fa790d-da75-d508-1ee1-bfd9c105a853.png)


死亡率に国別で差があることが分かります。  

さて、最後に今後のコロナウイルスの影響のシミュレーションに移ります。  
一旦、今後、仮値として、日次で1%の感染者が増えるとしましょう。


```python
simulated_growth_rate = 0.01
```

ここで、予測用のこれからの新しい日付データを追加します。  
範囲を指定して、日付データを生成できるdate_rangeメソッドを利用します。  
今回用いているデータは、05/01/20が最後なので、その次の日から40日間。


```python
dates = pd.date_range(start="05/02/2020",periods=40,freq='D')
dates = pd.Series(dates)
dates = dates.dt.strftime("%m/%d/%Y")
```


```python
simulated = confirmed.copy()
simulated = simulated.append(pd.DataFrame(index=dates))

for day in range(len(confirmed),len(confirmed)+40):
    simulated.iloc[day] = simulated.iloc[day-1] * (1 + simulated_growth_rate)
ax = plt.subplot()
ax.set_facecolor("black")
ax.figure.set_facecolor("#121212")
ax.tick_params(axis="x",colors="white")
ax.tick_params(axis="y",colors="white")
ax.set_title(f"covid-19 future for Japan",color="white")
simulated['Japan'].plot()
plt.show()
```

   


![output_85_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266200/76fa9fa2-f0c6-6fe6-7f6a-2c75d8c6cb59.png)



※ 念押しですが、これは仮の成長率(※ 日次1%ずつ増え続ける)に基づいた数字です。厳密なシミュレーションとして、受け止める必要はありません。  
以上です。ちょくちょく引用元の動画と違う部分はありますが、ざっとデータ分析の流れをつかめたかと思います。
是非、元動画をご覧ください。    
投稿者のNeuralNine氏は、動画の最後に、この分析は仮の数値などはあるものだから、真剣に受け止めなくていいことは強調したうえで、事実をデータをもとに把握し、自分が意識すべきことは大事であることを伝えてくれていました。