[PYTHON] Analysieren Sie den altersspezifischen Schweregrad des Coronavirus

In letzter Zeit sind viele Informationen über das Corona-Virus im Umlauf, aber ich denke, es ist schwierig zu beurteilen, ob es richtig ist, wenn es sich um Informationen handelt, von denen Sie nicht wissen, wer sie veröffentlicht hat.

** Um wirklich korrekte Informationen zu erhalten, sollten Sie die primären Informationen so weit wie möglich selbst analysieren **. In diesem Artikel werden wir die Schweregrade nach Altersgruppen anhand der von Hokkaido veröffentlichten Positive Patient Attribute Data vergleichen. ..

Daten gelesen

Verwenden Sie Pythons Pandas zur Analyse. Importieren Sie zuerst Pandas.

import pandas as pd

Dann lesen Sie die Daten.

df = pd.read_csv("https://www.harp.lg.jp/opendata/dataset/1369/resource/3132/010006_hokkaido_covid19_patients.csv", encoding="shift-jis")

Sie können die gelesenen Daten mit der head-Methode überprüfen.

df.head()

table1.png

Kategorisierung von Alter und Schweregrad

Dieses Mal werden wir den Schweregrad jeder Altersgruppe vergleichen. Lassen Sie uns zunächst sehen, wie die aktuellen Daten kategorisiert werden.

Beginnen wir mit dem Alter.

df["geduldig_Alter"].value_counts()
Nicht bekannt gegeben 231
20s 223
70er Jahre 219
60er Jahre 202
50er Jahre 193
40er Jahre 176
80er 163
30s 157
90er Jahre 75
Teen 33
Weniger als 10 16
100s 5
Unter 10 Jahren 4
Ältere Menschen 1
Name:geduldig_Alter, dtype: int64

Im Allgemeinen wird es durch "Generation" unterteilt, es gibt jedoch einige Notationsschwankungen (unter 10 und unter 10 Jahren) und ein unbekanntes Alter (ältere und nicht genannte).

Da es schwierig ist, mit vorhandenen Kategorien zu analysieren, werden wir hier Kategorien definieren und jedem Daten neue Kategorien zuweisen.

Definieren Sie zunächst, in welche der neuen Kategorien die ursprüngliche Kategorie passt.

age_dict = {
    "Weniger als 10": "Jugendliche und jünger",
    "Unter 10 Jahren": "Jugendliche und jünger",
    "10er": "10er以下",
    "20er Jahre": "20er Jahre",
    "30er Jahre": "30er Jahre",
    "Vierziger Jahre": "Vierziger Jahre",
    "50er Jahre": "50er Jahre",
    "60er Jahre": "60er Jahre",
    "70er Jahre": "70er Jahre",
    "80er Jahre": "80er Jahre",
    "90er Jahre": "90er Jahre以上",
    "100s": "90er und älter",
    "Nicht bekannt gegeben": "Unbekannt",
    "Senioren": "Unbekannt"
}

Fügen Sie dann dem DataFrame eine neue Kategoriespalte hinzu.

df["Alterskategorie"] = [age_dict[key] for key in df["geduldig_Alter"]]

Anhand der hier definierten Alterskategorie wird die Anzahl der schwerkranken Personen gezählt.

Überprüfen Sie in ähnlicher Weise für den Patientenstatus die ursprüngliche Kategorie und definieren Sie die neue Kategorie.

df["geduldig_Status"].value_counts()
Mildes Gespräch möglich 1004
−              108
Nicht bekannt gegeben 102
Asymptomatisch 102
Symptomloses Gespräch möglich 97
Mild 88
Mildes Gespräch möglich 54
Moderate Konversation möglich 35
Mild / Konversation möglich 30
Moderate 29
Schwere 13
Schweres krankes Gespräch nicht möglich 9
Auf dem Bett ruhen, Gespräch möglich 7
Symptomlos, Gespräch möglich 5
Schwere Verletzung: Kein Gespräch 3
Positiv nach dem Tod 2
Moderate Konversation nicht möglich 2
Kein Symptom, Gespräch möglich 2
Auf dem Bett ruhen, Gespräch möglich 1
Negativ bestätigt 1
Mildes hohes Fieber 1
Wird untersucht 1
Kommunikationsgrad 1
Moderat / Konversation möglich 1
Name:geduldig_Status, dtype: int64
stat_dict = {
    "Stark": "3.Stark",
    "Schweres Gespräch nicht möglich": "3.Stark",
    "Schwere Verletzung: Kein Gespräch": "3.Stark",
    "Moderate Konversation möglich": "2.Mäßig",
    "Mäßig": "2.Mäßig",
    "Moderate Konversation nicht möglich": "2.Mäßig",
    "Moderat / Konversation möglich": "2.Mäßig",
    "Mildes Gespräch möglich": "1.Leicht",
    "Leicht": "1.Leicht",
    "Mildes Gespräch möglich": "1.Leicht",
    "Mild / Konversation möglich": "1.Leicht",
    "Mildes hohes Fieber": "1.Leicht",
    "Symptomloses Gespräch möglich": "0.Keine Symptome",
    "Asymptomatisch": "0.Keine Symptome",
    "Symptomlos, Gespräch möglich": "0.Keine Symptome",
    "Keine Symptome, Gespräch möglich": "0.Keine Symptome",
    "−": "Unbekannt",
    "Nicht bekannt gegeben": "Unbekannt",
    "Ruhe dich auf dem Bett aus, Gespräch möglich": "Unbekannt",
    "Nach dem Tod positiv geworden": "Unbekannt",
    "Kommunikationsgrad": "Unbekannt",
    "Negativ bestätigt": "Unbekannt",
    "Nachforschungen anstellen": "Unbekannt",
    "Ruhe dich auf dem Bett aus, Gespräch möglich": "Unbekannt"
}
df["Staatskategorie"] = [stat_dict[key] for key in df["geduldig_Status"]]

Damit ist die Zuordnung der Epochen- und der Landeskategorie abgeschlossen. Sie können überprüfen, wie es tatsächlich mit der head-Methode zugewiesen wurde.

df.head()

table2.png

Aggregation der Anzahl schwerkranker Personen nach Alter

Nachdem die Kategorien fertig sind, zählen wir die Anzahl der Patienten nach Statuskategorie. Wir haben Kreuztabelle für Kreuztabelle für die Aggregation übernommen.

//Japanisierung von Matplotlib
pip install japanize-matplotlib
import japanize_matplotlib
import seaborn as sns
sns.set(font="IPAexGothic")

pd.crosstab(df["Alterskategorie"], df["Staatskategorie"]).apply(
    lambda x: x/sum(x), axis=1
).plot(
    kind="bar",
    logy=True,
    rot=45,
    figsize=(8,4),
    color=["grey", "grey", "orange", "red", "grey"]
).legend(loc="upper left")

crosstab.png

Da die Anzahl der mittelschweren und schweren Fälle insgesamt gering ist (weniger als 10%), wird die y-Achse logarithmisch angezeigt.

Es wird oft gesagt, dass das Coronavirus bei jungen Menschen mild bleibt und bei älteren Menschen tendenziell schwerwiegend wird, aber wenn es tatsächlich aggregiert wird, ist diese Tendenz sicherlich zu sehen.

Bis in die 30er Jahre gibt es fast keine mittelschweren oder schweren Fälle, und der Anteil schwerkranker Fälle steigt im Verhältnis zum Alter von den 40ern bis zu den 80ern deutlich an **.

Zusammenfassung

Dieses Mal wurde unter Verwendung der Coronavirus-positiven Personenattributdaten in Hokkaido bestätigt, dass die Schweregradrate proportional zum Alter zunimmt.

Auf diese Weise können Sie genauere Kenntnisse erhalten, indem Sie ** die von den nationalen und Präfekturregierungen veröffentlichten Primärdaten selbst analysieren **.

Offene Daten sind nicht immer korrekt, aber warum nicht die hier vorgestellte Methode ausprobieren, um schnell so genaue Informationen wie möglich zu erhalten?

das ist alles.

Recommended Posts

Analysieren Sie den altersspezifischen Schweregrad des Coronavirus
Schätzen Sie die maximale Infektiosität des neuen Coronavirus ab
GUI-Simulation des neuen Koronavirus (SEIR-Modell)
Der Beginn von cif2cell
Die Bedeutung des Selbst
der Zen von Python
Die Geschichte von sys.path.append ()
Lassen Sie uns die medizinische Kollapshypothese des neuen Koronavirus testen
Rache der Typen: Rache der Typen
Stellen wir uns die Anzahl der mit Matplotlib mit dem Coronavirus infizierten Personen vor
Quantifizieren Sie den Grad der Selbstbeherrschung, der erforderlich ist, um das neue Koronavirus einzudämmen
Was ich bei der Analyse der Daten des Ingenieurmarktes gesehen habe
Richten Sie die Version von chromedriver_binary aus
Scraping das Ergebnis von "Schedule-Kun"
10. Zählen der Anzahl der Zeilen
Die Geschichte des Baus von Zabbix 4.4
Auf dem Weg zum Ruhestand von Python2
Vergleichen Sie die Schriftarten von Jupyter-Themen
Holen Sie sich die Anzahl der Ziffern
Erläutern Sie den Code von Tensorflow_in_ROS
Verwenden Sie die Clustering-Ergebnisse erneut
GoPiGo3 des alten Mannes
Berechnen Sie die Anzahl der Änderungen
Ändern Sie das Thema von Jupyter
Die Popularität von Programmiersprachen
Ändern Sie den Stil von matplotlib
Visualisieren Sie die Flugbahn von Hayabusa 2
Über die Komponenten von Luigi
Verknüpfte Komponenten des Diagramms
Filtern Sie die Ausgabe von tracemalloc
Über die Funktionen von Python
Simulation des Inhalts der Brieftasche
Die Kraft der Pandas: Python
Ich habe es herausgefunden, indem ich die Bewertungen der Website für Jobwechsel analysiert habe! ??