[PYTHON] (Jetzt) Ich habe versucht, das neue Koronavirus (COVID-19) zu analysieren.

Einführung

Am 16. Januar 2020 wurde in Japan erstmals eine neue durch SARS-CoV-2 (Virusname) verursachte Coronavirus-Infektion (Krankheitsname) bestätigt. Leider hat die Krankheit viele Menschen getötet, von gewöhnlichen Menschen bis zu Prominenten. Selbst jetzt, mehr als ein halbes Jahr danach, hat die Mode nicht nachgelassen, und Masken sind eine Notwendigkeit beim Ausgehen. In diesem Beitrag haben wir das Koronavirus in Japan kurz analysiert und zusammengefasst. Ich hoffte, dass diese Analyse mich sensibilisieren und meine Analysefähigkeiten verbessern würde.

Datenaufbereitung

Bei der Analyse des Corona-Virus verwendeten wir diesmal die von Jag Japan Co., Ltd. veröffentlichten CSV-Daten. Vielen Dank. Ich werde den Link unten posten.

Über "Karte der Anzahl der mit dem neuen Koronavirus infizierten Personen" スクリーンショット 2020-08-30 12.56.46.png

Umgebung

Versuchen Sie zu analysieren

1. Importieren Sie die erforderlichen Bibliotheken

COVID-19.ipynb


import collections
import matplotlib.pyplot as plt
import pandas as pd

2. Lesen Sie die CSV-Datei

COVID-19.ipynb


pd.set_option('display.max_columns', None)
df = pd.read_csv('COVID-19.csv')
df

Wenn in JupyterLab viele Spalten vorhanden sind, wird die Anzeige weggelassen. Zeigen Sie daher alles in der ersten Zeile an.

3. Überprüfen Sie das Alter der infizierten Person

COVID-19.ipynb


age = df['Alter'].value_counts(ascending=True)
age

Ausführungsergebnis


90 oder mehr 1
90er Jahre 1
100         2
80er Jahre 7
Teen 9
70er Jahre 10
60er Jahre 12
90         14
50er Jahre 25
30s 33
40s 33
80         44
20s 49
10         66
70         69
60        128
40        167
50        179
30        203
20        310
90       1040
Unbekannt 1145
0-10     1335
80       2645
10       2952
70       3751
60       4531
50       7355
40       8315
30      10551
20      18009
Name:Alter, dtype: int64

Da es keine einzelne Notation wie 20er und 20er gibt, hat sich die Anzahl der Ausgabeergebnisse erhöht. Ich werde versuchen, die Notation mit df.replace () zu vereinheitlichen.

COVID-19.ipynb


df = df.replace({'Alter':{'0-10':'under10','10er':'10','20er Jahre':'20', '30er Jahre':'30', 'Vierziger Jahre':'40', '50er Jahre':'50', '60er Jahre':'60', '70er Jahre':'70', '80er Jahre':'80', '90er Jahre':'90' , 'Unbekannt':'unknown', 'Mehr als 90':'90~'}})
age2 = df['Alter'].value_counts()
age2

Ausgabeergebnis


20              18009
30              10551
40               8315
50               7355
60               4531
70               3751
10               2952
80               2645
under10     1335
unknown          1145
90               1040
20                359
30                236
50                204
40                200
60                140
70                 79
10                 75
80                 51
90                 15
100                 2
90~                 1
Name:Alter, dtype: int64

Ich konnte die Ausgangsanzeige mehr als zuvor unterdrücken. (Ich habe verschiedene Dinge ausprobiert, weil ich die Summe mit den gleichen Zahlen erhalten wollte, aber es hat nicht funktioniert, also lasse ich es als zukünftige Aufgabe.) Es ist ein wenig schwer zu sehen, also werde ich es mit einem Diagramm visualisieren.

COVID-19.ipynb


plt.title('Age of infected person')
age2.plot.bar()

Age of infected person.png Das Erstellen eines Diagramms erleichtert das visuelle Verständnis. Wenn wir uns diese Grafik ansehen, können wir sehen, dass jüngere Generationen, wie die in den 20ern, 30ern, 40ern usw., stärker infiziert sind. Insbesondere die große Anzahl infizierter Menschen im Alter von 20 Jahren ist offensichtlich.

4. Überprüfen Sie die Anzahl der infizierten Personen nach Geschlecht

COVID-19.ipynb


df = df.replace({'Sex':{'männlich':'male', 'Weiblich':'female', 'Unbekannt':'unknown'}})
sex = df['Sex'].value_counts()

plt.xlabel('Sex')
plt.ylabel('Number of people')
plt.title('Infected_sex')

#print(sex) #Zeigen Sie an, wann Sie die detaillierte Anzahl der infizierten Personen nach Geschlecht wissen möchten
sex.plot.bar()

Infected_sex.png

Als ich es in einer Grafik überprüfte, stellte ich fest, dass die Anzahl der infizierten Personen bei Männern höher war. Ich denke, dass eine Infektion nicht vom Geschlecht des Menschen abhängt, aber ich denke, dass der Zweck und das Verhalten beim Ausgehen unterschiedlich sind. Wenn ich also im Detail wissen kann, erwarte ich, dass die Beziehung zwischen der Anzahl der Infektionen nach Geschlecht bestimmt werden kann.

5. Überprüfen Sie die Zunahme / Abnahme der positiven Reaktion

COVID-19.ipynb


fixed_date = df['Festes Datum']
fixed_date = collections.Counter(fixed_date)
#fixed_date #Da viel ausgegeben wird, wird das Ausführungsergebnis weggelassen.

date = []
value = []

for get_date in fixed_date:
    date.append(get_date)
for get_value in fixed_date.values():
    value.append(get_value)

plt.plot(date, value)
plt.xticks( [0, 180, 70] )
plt.xticks(rotation=45)

plt.xlabel('date')
plt.ylabel('value')
plt.title('Changes in infected people')

plt.show()

Changes in infected people.png Wenn Sie die Grafik überprüfen, können Sie sehen, dass positive Patienten ab Januar bestätigt wurden, und obwohl die Zahl um April stark anstieg und vorübergehend heilte, stieg sie im Juli wieder an und erreichte um August ihren Höhepunkt. Durch die Erstellung eines Diagramms konnten wir die zweite Welle des neuen Koronavirus bestätigen. Seit dem Ende der Grafik ist die Anzahl der bestätigten positiven Patienten stark zurückgegangen, daher freue ich mich auf die Zukunft.

6. Zeichnen Sie die Orte, an denen die Koronainfektion bestätigt wurde, auf die Karte

Ich habe X- und Y-Koordinatendaten in CSV, also werde ich sie zeichnen. Dieses Mal habe ich auf [diesen Artikel] verwiesen (https://note.com/yearman/n/n69fa3f2d583d#BPSkg).

COVID-19.ipynb


#Installieren Sie es so, wie es für die Verwendung von Geopandas erforderlich ist
pipenv install geopandas
pipenv install descartes

#Stellen Sie die ursprünglichen Kartendaten dar
map_1 = gpd.read_file('./land-master(qiita)/japan.geojson')
map_1.plot(figsize=(10,10), edgecolor='#444', facecolor='white', linewidth = 1);

map_1.png

COVID-19.ipynb


#Versuchen Sie, die XY-Koordinaten von CSV einzugeben
map_1.plot(figsize=(10,10), edgecolor='#444', facecolor='white', linewidth = 1);
plt.scatter(df['X'],df['Y'])
plt.show()

スクリーンショット 2020-08-30 15.49.01.png Wenn Sie sich die eingezeichneten Punkte genau ansehen, werden sie in der oberen rechten Ecke sinnvoll zusammengefasst. Erweitern wir sie also.

COVID-19.ipynb


map_1.plot(figsize=(10,10), edgecolor='#444', facecolor='white', linewidth = 1);
plt.xlim([120,150]) #Stellen Sie den Bereich ein, den Sie erweitern möchten(Irgendein)
plt.ylim([30,46]) #Stellen Sie den Bereich ein, den Sie erweitern möchten(Irgendein)
plt.scatter(df['X'],df['Y'])
plt.show()

スクリーンショット 2020-08-30 15.52.15.png Ich konnte bestätigen, dass ich fest planen konnte. Sie können dieser Karte entnehmen, dass das Corona-Virus landesweit verbreitet ist. Es stellte sich heraus, dass es in der gesamten Kyushu-Region viele Infizierte gibt, ganz zu schweigen von der Kanto-Region. Es ist sehr beängstigend zu glauben, dass überall ein Infektionsrisiko besteht.

7. Zusammenfassung

Ich denke, es gibt einige Punkte, die ich nicht erreicht habe, seit dies mein erster Beitrag über Qiita ist, aber ich bin sehr froh, dass ich es genossen habe, Artikel zu analysieren und zu erstellen. Es ist eine einfache Analyse, aber ich bin sehr glücklich, weil ich etwas Neues für mich ausprobieren konnte, indem ich Koordinaten auf einer Karte zeichnete. In Zukunft möchte ich mich der Herausforderung einer tieferen Koronaanalyse stellen. Es ist eine schwierige Zeit mit dem Corona-Virus, aber bitte lieben Sie sich.

Recommended Posts

(Jetzt) Ich habe versucht, das neue Koronavirus (COVID-19) zu analysieren.
Ich habe die Tweets über den neuen Corona-Virus analysiert, die auf Twitter veröffentlicht wurden
Ich habe die Tweets über den neuen Corona-Virus analysiert, die auf Twitter Teil 2 veröffentlicht wurden
Zeichnen Sie die Ausbreitung des neuen Koronavirus
Ich habe versucht, die Anzahl der Todesfälle pro Kopf von COVID-19 (neues Koronavirus) nach Ländern zu tabellieren
Schätzen Sie die maximale Infektiosität des neuen Coronavirus ab
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe zuerst die SARS-Analyse vor dem Corona-Virus versucht
Ich habe einige der neuen Funktionen von Python 3.8 touched angesprochen
GUI-Simulation des neuen Koronavirus (SEIR-Modell)
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht, die neuen mit dem Corona-Virus infizierten Menschen in Ichikawa City, Präfektur Chiba, zusammenzufassen
Ich habe versucht, die Eigenschaften der neuen Informationen über mit dem Corona-Virus infizierte Personen mit Wordcloud zu visualisieren
Lassen Sie uns die medizinische Kollapshypothese des neuen Koronavirus testen
Ich habe die Körner gezählt
Quantifizieren Sie den Grad der Selbstbeherrschung, der erforderlich ist, um das neue Koronavirus einzudämmen
Ich habe versucht, PDF-Daten der medizinischen Online-Versorgung zu verwenden, die auf der Ausbreitung einer neuen Coronavirus-Infektion basieren