Lassen Sie uns Covid-19 (Corona) -Daten mit Python analysieren [Für Anfänger]

Auf Youtube in Übersee gab es ein Vorlesungsvideo, in dem Python verwendet wird, um Daten anhand von Daten wie der Anzahl der mit Covid-19 (Corona) infizierten Personen zu analysieren. Deshalb habe ich es versucht.

Klicken Sie hier für das Quellvideo ↓ Analyzing Coronavirus with Python (COVID-19) by NeuralNine on Youtube

Ziel

Besonders empfehlenswert für Python-Anfänger, die sich an Pandas gewöhnen und Daten analysieren möchten. Die Vorlesung ist in englischer Sprache, aber eine sehr einfache und höfliche Erklärung. Schauen Sie also bitte vorbei.

Über diesen Artikel

Übung

Analyzing Coronavirus with Python (COVID-19) by NeuralNine on Youtube

Laden Sie den Datensatz von der folgenden Site herunter HDX(HUMANITARIAN DATA EXCHANGE)

Verwenden Sie im verknüpften Datensatz Folgendes

Es sind die Daten von [Infektionsnummer (Bestätigungsnummer), Anzahl der Todesfälle, Anzahl der Genesung].

Der Name der Daten ist lang. Ändern Sie ihn daher wie folgt.

Bibliothek importieren

import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline

Lesen Sie die Daten

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

Zeigen Sie die Daten der infizierten Person als Test an (* Im Originalvideo sind es die Daten von 3/22 zum Zeitpunkt der Aufnahme, aber die folgenden sind bis 5/1)

confirmed.head()
Province/State Country/Region Lat Long 1/22/20 1/23/20 1/24/20 1/25/20 1/26/20 1/27/20 ... 4/22/20 4/23/20 4/24/20 4/25/20 4/26/20 4/27/20 4/28/20 4/29/20 4/30/20 5/1/20
0 NaN Afghanistan 33.0000 65.0000 0 0 0 0 0 0 ... 1176 1279 1351 1463 1531 1703 1828 1939 2171 2335
1 NaN Albania 41.1533 20.1683 0 0 0 0 0 0 ... 634 663 678 712 726 736 750 766 773 782
2 NaN Algeria 28.0339 1.6596 0 0 0 0 0 0 ... 2910 3007 3127 3256 3382 3517 3649 3848 4006 4154
3 NaN Andorra 42.5063 1.5218 0 0 0 0 0 0 ... 723 723 731 738 738 743 743 743 745 745
4 NaN Angola -11.2027 17.8739 0 0 0 0 0 0 ... 25 25 25 25 26 27 27 27 27 30

5 rows × 105 columns

Dieses Mal brauche ich nicht so viel Provide und Lat / Long, also werde ich jede Spalte löschen.

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)

Lassen Sie uns diese Daten nach Land / Region aggregieren

confirmed = confirmed.groupby(confirmed["Country/Region"]).aggregate("sum")
deaths = deaths.groupby(deaths["Country/Region"]).aggregate("sum")
recovered = recovered.groupby(recovered["Country/Region"]).aggregate("sum")
confirmed.head()
1/22/20 1/23/20 1/24/20 1/25/20 1/26/20 1/27/20 1/28/20 1/29/20 1/30/20 1/31/20 ... 4/22/20 4/23/20 4/24/20 4/25/20 4/26/20 4/27/20 4/28/20 4/29/20 4/30/20 5/1/20
Country/Region
Afghanistan 0 0 0 0 0 0 0 0 0 0 ... 1176 1279 1351 1463 1531 1703 1828 1939 2171 2335
Albania 0 0 0 0 0 0 0 0 0 0 ... 634 663 678 712 726 736 750 766 773 782
Algeria 0 0 0 0 0 0 0 0 0 0 ... 2910 3007 3127 3256 3382 3517 3649 3848 4006 4154
Andorra 0 0 0 0 0 0 0 0 0 0 ... 723 723 731 738 738 743 743 743 745 745
Angola 0 0 0 0 0 0 0 0 0 0 ... 25 25 25 25 26 27 27 27 27 30

5 rows × 101 columns

Und als nächstes ist das Datum die Merkmalsmenge, aber dieses Mal möchten wir das Land zur Merkmalsmenge machen, damit wir die Daten transponieren (die Matrix ersetzen).

confirmed = confirmed.T
deaths = deaths.T
recovered = recovered.T
confirmed.head()
Country/Region Afghanistan Albania Algeria Andorra Angola Antigua and Barbuda Argentina Armenia Australia Austria ... United Kingdom Uruguay Uzbekistan Venezuela Vietnam West Bank and Gaza Western Sahara Yemen Zambia Zimbabwe
1/22/20 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
1/23/20 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 2 0 0 0 0 0
1/24/20 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 2 0 0 0 0 0
1/25/20 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 2 0 0 0 0 0
1/26/20 0 0 0 0 0 0 0 0 4 0 ... 0 0 0 0 2 0 0 0 0 0

5 rows × 187 columns

Zu diesem Zeitpunkt sind die Daten bereit. Fahren wir mit der Berechnung fort.

Schauen wir uns zunächst die Veränderungen in der Anzahl der infizierten Personen an. Die hier erforderlichen Daten sind der Unterschied in der Anzahl der infizierten Personen zwischen dem Tag und dem Tag zuvor.

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

Zeigen Sie die Daten der letzten 10 Tage an

new_cases.tail(10)
Country/Region Afghanistan Albania Algeria Andorra Angola Antigua and Barbuda Argentina Armenia Australia Austria ... United Kingdom Uruguay Uzbekistan Venezuela Vietnam West Bank and Gaza Western Sahara Yemen Zambia Zimbabwe
4/22/20 84 25 99 6 1 1 113 72 7 52 ... 4466 8 38 3 0 8 0 0 4 0
4/23/20 103 29 97 0 0 0 291 50 10 77 ... 4608 14 42 23 0 6 0 0 2 0
4/24/20 72 15 120 8 0 0 172 73 15 69 ... 5394 6 46 7 2 4 0 0 8 1
4/25/20 112 34 129 7 0 0 173 81 17 77 ... 4929 33 58 5 0 -142 0 0 0 2
4/26/20 68 14 126 0 1 0 112 69 20 77 ... 4468 10 7 2 0 0 0 0 4 0
4/27/20 172 10 135 5 1 0 111 62 7 49 ... 4311 14 35 4 0 0 0 0 0 1
4/28/20 125 14 132 0 0 0 124 59 23 83 ... 4002 5 35 0 0 1 0 0 7 0
4/29/20 111 16 199 0 0 0 158 65 8 45 ... 4091 5 63 2 0 1 0 5 2 0
4/30/20 232 7 158 2 0 0 143 134 14 50 ... 6040 13 37 2 0 0 0 0 9 8
5/1/20 164 9 148 0 3 1 104 82 12 79 ... 6204 5 47 2 0 9 0 1 3 0

10 rows × 187 columns

Vergleichen wir mit Daten infizierter Personen

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

10 rows × 187 columns

Zum Beispiel haben Afghanistan, Algerien, Argentinien und das Vereinigte Königreich eine große absolute Anzahl infizierter Menschen, aber wir können sehen, dass die Anzahl neu infizierter Menschen immer noch groß ist.

In new_cases haben wir uns die täglichen "Erhöhungen" der Anzahl infizierter Personen angesehen, aber als nächstes betrachten wir die "Erhöhungsrate". (Erhöhung des Tages / Anzahl der infizierten Personen am Vortag) * 100 kann verwendet werden, um die Rate zu erhöhen.

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

10 rows × 187 columns

Übrigens ist die Anzahl der infizierten Personen (bestätigt) die sogenannte kumulative Anzahl. Lassen Sie uns hier die aktuelle Anzahl der infizierten Personen (aktiv) abrufen.

active_cases = confirmed.copy()

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

Verwenden wir dann die Daten dieser derzeit progressiven Anzahl von infizierten Personen active_cases, um die Steigerungsrate der Anzahl der derzeit fortschreitenden infizierten Personen erneut zu untersuchen. Wenn wir dies untersuchen, scheinen wir zu sehen, ob es wahrscheinlich ist, dass es konvergiert.

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

10 rows × 187 columns

Zunehmende Rate anhaltender Infektionen in den letzten 10 Tagen (2020/04 / 22-05 / 01) (China, Italien, Amerika, Japan)

Zunächst scheint China, das als von der Korona betroffenes Land gilt, vor kurzem konvergiert zu haben. Schauen wir uns also die Daten der letzten 10 Tage Chinas an.

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

Es ist ersichtlich, dass die Steigerungsrate negativ ist, dh die Anzahl der Menschen mit anhaltenden Infektionen nimmt weiter ab → es geht in Richtung Konvergenz.

Was ist als nächstes mit Italien?

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

Die Abnahmerate beträgt weniger als 1%, es handelt sich also um eine leichte Abnahme, die jedoch nicht zugenommen hat.

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

Amerika wächst immer noch um einige Prozent.

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

Auch in Japan scheint es nach und nach abgenommen zu haben, aber es nimmt zu.

Japan ist eine große Sache. Schauen wir uns also die durchschnittliche Steigerungsrate der letzten 10 Tage an.

overall_growth_rate['Japan'].tail(10).mean()
1.277542288600591

Es ist ungefähr 1%, aber es scheint zuzunehmen. Nun, die Zahl der Infizierten ist in Japan immer noch gering, daher kann man sagen, dass sie relativ unterdrückt ist.

Von hier aus werden wir die Visualisierung hinzufügen.

Schauen wir uns zuerst die Sterblichkeitsrate an. Die Mortalität ist wichtig, da sie ein Indikator für den Schweregrad der Korona nach Regionen ist.

Erstens ähnelt der Mortalitätsdatenrahmen dem vorherigen Verfahren. Die Sterblichkeitsrate wird als tot / infiziert ausgedrückt.

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

Berechnen Sie als Nächstes die Anzahl der Betten, die Sie benötigen (und umgekehrt, wie wahrscheinlich es ist, dass Ihnen die Betten ausgehen). Wir verwenden die Hospitalisierungsrate "Hospitalisierung", die den Prozentsatz der infizierten Personen angibt, die ein Krankenhaus benötigen. Ich kenne die richtige Nummer nicht, daher werde ich eine temporäre Nummer verwenden (in diesem Fall 0,05). Sie können es in eine beliebige Zahl ändern. In dieser Vorlesung konzentrieren wir uns auf Analyse- und Berechnungsmethoden, sodass wir die Genauigkeit vorerst belassen.

hospitalization_rate_estimate = 0.05
hospitalization_needed = confirmed.copy()
for day in range(0,len(confirmed)):
    hospitalization_needed.iloc[day] = active_cases.iloc[day] * hospitalization_rate_estimate
hospitalization_needed.tail()
Country/Region Afghanistan Albania Algeria Andorra Angola Antigua and Barbuda Argentina Armenia Australia Austria ... United Kingdom Uruguay Uzbekistan Venezuela Vietnam West Bank and Gaza Western Sahara Yemen Zambia Zimbabwe
4/27/20 71.30 14.30 76.35 15.90 0.95 0.50 133.30 46.55 52.50 118.15 ... 6654.15 10.95 50.20 8.85 2.25 12.85 0.05 0.00 2.15 1.15
4/28/20 77.10 14.45 78.05 15.20 0.95 0.50 137.90 48.55 49.50 110.40 ... 6808.40 10.80 46.95 8.85 2.40 13.50 0.05 0.00 2.50 1.15
4/29/20 81.35 14.05 85.10 13.90 0.90 0.50 143.95 50.10 47.30 102.15 ... 6970.90 10.15 44.85 8.95 2.40 13.55 0.05 0.25 2.00 1.15
4/30/20 92.35 13.60 88.85 11.75 0.90 0.50 147.70 55.25 46.55 98.05 ... 7239.00 10.45 44.85 8.75 2.55 13.30 0.05 0.15 2.40 1.55
5/1/20 97.85 13.15 94.00 11.70 0.85 0.35 150.75 56.90 45.50 91.60 ... 7510.50 9.80 43.25 8.85 2.55 13.75 0.05 0.20 1.60 1.55

5 rows × 187 columns

Selbst wenn Sie hier ein Land ausschalten, ist es schwer zu verstehen, wie ernst es ist. Schauen wir uns also den Durchschnitt der letzten 5 Tage an.

hospitalization_needed.tail().mean().mean()
532.5691978609626

Durchschnittliche Anzahl der in allen Ländern in den letzten 5 Tagen benötigten Betten. Natürlich gibt es Variationen, daher ist es kein sehr idealer Referenzwert, aber ich werde einmal darauf verweisen. Werfen wir einen Blick auf den Durchschnitt der letzten 5 Tage in Italien.

hospitalization_needed['Italy'].tail().mean()
5181.6900000000005

Mit anderen Worten, die Zahl war ungefähr zehnmal so hoch wie der Weltdurchschnitt. Es ist ziemlich ernst.

Visualisieren. Es gibt jedoch zu viele Länder. Wählen wir diesmal einige beliebige Länder aus. Wählen Sie hier Italien, Amerika, China, Japan, Russland, Spanien.

countries = ['Italy','US',"China","Japan","Russia","Spain"]
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

Die Zahl der Infizierten in den USA hat seit Ende März erheblich zugenommen. Mal sehen, wie viele Todesfälle es gibt.

Die Form des Diagramms ändert sich nicht wesentlich und scheint mit der Anzahl der infizierten Personen in Zusammenhang zu stehen.

Als nächstes zeichnen wir die Steigerungsrate bei infizierten Menschen.

Aber jetzt zeichne ich auf einem Balkendiagramm. Wenn sich das Diagramm in einem Balkendiagramm auf einer Figur zu stark überlappt, ist die Sichtbarkeit gering, sodass es separat angezeigt wird.

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

output_76_1.png

output_76_2.png

output_76_3.png

output_76_4.png

output_76_5.png

Schauen wir uns auf die gleiche Weise die Anzahl der Todesfälle und die Sterblichkeitsrate an (* Dies ist die "Anstiegsrate infizierter Menschen" und dies ist die "Sterblichkeitsrate").

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

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

output_79_1.png

output_79_2.png

output_79_3.png

output_79_4.png

output_79_5.png

Sie können sehen, dass die Sterblichkeitsrate von Land zu Land unterschiedlich ist.

Lassen Sie uns abschließend die Auswirkungen des Koronavirus in der Zukunft simulieren. Nehmen wir als vorläufigen Wert an, dass die Anzahl der Infizierten täglich um 1% zunimmt.

simulated_growth_rate = 0.01

Fügen Sie nun die bevorstehenden neuen Datumsdaten für Ihre Vorhersagen hinzu. Verwenden Sie die Methode date_range, mit der Sie einen Bereich angeben und Datumsdaten generieren können. Die letzten Daten, die dieses Mal verwendet werden, sind der 01.05.20, also sind es 40 Tage ab dem nächsten Tag.

dates = pd.date_range(start="05/02/2020",periods=40,freq='D')
dates = pd.Series(dates)
dates = dates.dt.strftime("%m/%d/%Y")
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

Recommended Posts

Lassen Sie uns Covid-19 (Corona) -Daten mit Python analysieren [Für Anfänger]
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
Lassen Sie uns Python für Super-Anfänger zusammenstellen
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Laden von Daten
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Datenbereinigung mit Python
Python Lehrbuch für Anfänger
OpenCV für Python-Anfänger
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-F-Modell
Python-Übung für Anfänger # 1 [Grundlegende Datentypen / If-Anweisungen]
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: S-R-Trendanalyse
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: SIR-Modell
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Parameterschätzung
Python für die Datenanalyse Kapitel 4
Lernablauf für Python-Anfänger
Python3-Umgebungskonstruktion (für Anfänger)
Python #Funktion 2 für Super-Anfänger
Grundlegende Python-Grammatik für Anfänger
Python für die Datenanalyse Kapitel 2
100 Pandas klopfen für Python-Anfänger
Python #Funktion 1 für Super-Anfänger
Python #Liste für Super-Anfänger
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Datenanalyse mit Python-Pandas
Python für die Datenanalyse Kapitel 3
[CovsirPhy] COVID-19 Python-Paket für die Datenanalyse: Szenarioanalyse (Parametervergleich)
[Python] Zugreifen auf und Zuschneiden von Bildpixeln mit OpenCV (für Anfänger)
[Python Machine Learning] Empfehlung zur Verwendung von Spyder für Anfänger (Stand August 2020)
Datenerfassung mit Python Googlemap API
Python-Übungen für Anfänger # 2 [für Anweisung / while-Anweisung]
Python für Super-Anfänger Super-Anfänger Python # Wörterbuch Typ 1
Python-Kurs für datenwissenschaftlich-nützliche Techniken
Versuchen Sie, Online-Familien-Mahjong mit Python zu analysieren (TEIL 1: Daten aufnehmen)
Python #index für Super-Anfänger, Slices
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
[TouchDesigner] Tipps für die Anweisung von Python
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Mal sehen, wie man Eingaben in Python verwendet
[Python] Analysieren Sie Splatoon 2-Ligaspieldaten mithilfe einer Korrelationskoeffiziententabelle
Python #len Funktion für Super-Anfänger
Datenformatierung für Python / Farbdiagramme
Web Scraping für Anfänger in Python (1)
[Python] Grund für das Überschreiben mit super ()
Führen Sie unittest in Python aus (für Anfänger)
[Python] Neunundneunzig Tabellen, die for-Anweisungen verwenden
Web Scraping für Anfänger in Python (4) -1
Python #Hello World für Super-Anfänger
Python für Super-Anfänger Super-Anfänger Python # Wörterbuch Typ 2
[Für Anfänger] Prozessüberwachung mit cron
Lassen Sie uns die Stimme mit Python # 1 FFT analysieren
[Für Anfänger] Skript innerhalb von 10 Zeilen (5. Resample von Zeitreihendaten mit Pandas)
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
Analysieren Sie Daten mit RegEx 100x Flash Text
Hinweise zur Verwendung von OpenCV mit Windows 10 Python 3.8.3.
INSERT in MySQL mit Python [Für Anfänger]
Python-Entwicklungsumgebung für macOS mit venv 2016