[PYTHON] Analyser la gravité spécifique à l'âge du coronavirus

Récemment, beaucoup d'informations sur le virus corona ont circulé, mais je pense qu'il est difficile de juger si elles sont correctes si ce sont des informations que vous ne savez pas qui les a publiées.

** Pour obtenir des informations vraiment correctes, vous devez analyser les informations primaires vous-même autant que possible **. Dans cet article, nous comparerons les taux de gravité par groupe d'âge en utilisant Positive Patient Attribute Data publié par Hokkaido. ..

Lecture des données

Utilisez les pandas de Python pour l'analyse. Tout d'abord, importez des pandas.

import pandas as pd

Ensuite, lisez les données.

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

Vous pouvez vérifier les données lues avec la méthode head.

df.head()

table1.png

Catégorisation de l'âge et de la gravité

Maintenant, cette fois, nous comparerons la gravité de chaque groupe d'âge. Voyons d'abord comment les données actuelles sont catégorisées.

Commençons par l'âge.

df["patient_Âge"].value_counts()
Non divulgué 231
Années 20 223
Années 70 219
Années 60 202
50 ans 193
Années 40 176
Années 80 163
30 ans 157
Années 90 75
Jeune 33
Moins de 10 16
100 s 5
Moins de 10 ans 4
Personnes âgées 1
Name:patient_Âge, dtype: int64

Généralement, il est divisé par «-génération», mais il y a quelques fluctuations de notation (moins de 10 ans et moins de 10 ans) et âge inconnu (personnes âgées et non divulguées).

Puisqu'il est difficile d'analyser avec les catégories existantes, définissez les catégories ici et attribuez une nouvelle catégorie à chaque donnée.

Tout d'abord, définissez dans laquelle des nouvelles catégories s'inscrit la catégorie d'origine.

age_dict = {
    "Moins de 10": "Ados et plus jeunes",
    "Moins de 10 ans": "Ados et plus jeunes",
    "10 ans": "10 ans以下",
    "20 ans": "20 ans",
    "30 s": "30 s",
    "Quarante": "Quarante",
    "Années 50": "Années 50",
    "Années 60": "Années 60",
    "Années 70": "Années 70",
    "Années 80": "Années 80",
    "Années 90": "Années 90以上",
    "100 s": "90 ans et plus",
    "non dévoilé": "inconnue",
    "personnes agées": "inconnue"
}

Ajoutez ensuite une nouvelle colonne de catégorie au DataFrame.

df["Catégorie d'âge"] = [age_dict[key] for key in df["patient_Âge"]]

Sur la base de la catégorie d'âge définie ici, le nombre de personnes gravement malades sera compté.

De même, pour l'état du patient, vérifiez la catégorie d'origine et définissez la nouvelle catégorie.

df["patient_Statut"].value_counts()
Légère conversation possible 1004
−              108
Non divulgué 102
Asymptomatique 102
Conversation sans symptôme possible 97
Doux 88
Doux, conversation possible 54
Conversation modérée possible 35
Doux / conversation possible 30
Modéré 29
Sévère 13
Conversation gravement malade impossible 9
Repos sur le lit, conversation possible 7
Sans symptôme, conversation possible 5
Blessure grave: pas de conversation 3
Positif après la mort 2
Conversation modérée impossible 2
Aucun symptôme, conversation possible 2
Repos sur le lit, conversation possible 1
Négatif confirmé 1
Légère forte fièvre 1
En cours d'enquête 1
Degré de communication 1
Modéré / conversation possible 1
Name:patient_Statut, dtype: int64
stat_dict = {
    "Sévère": "3.Sévère",
    "Conversation sévère impossible": "3.Sévère",
    "Blessure grave: aucune conversation": "3.Sévère",
    "Conversation modérée possible": "2.Modérer",
    "Modérer": "2.Modérer",
    "Conversation modérée impossible": "2.Modérer",
    "Modéré / conversation possible": "2.Modérer",
    "Conversation légère possible": "1.Bénin",
    "Bénin": "1.Bénin",
    "Doux, conversation possible": "1.Bénin",
    "Doux / conversation possible": "1.Bénin",
    "Légère forte fièvre": "1.Bénin",
    "Conversation sans symptômes possible": "0.Aucun symptôme",
    "Asymptomatique": "0.Aucun symptôme",
    "Sans symptôme, conversation possible": "0.Aucun symptôme",
    "Aucun symptôme, conversation possible": "0.Aucun symptôme",
    "−": "inconnue",
    "non dévoilé": "inconnue",
    "Repos sur le lit, conversation possible": "inconnue",
    "Est devenu positif après la mort": "inconnue",
    "Degré de communication": "inconnue",
    "Négatif confirmé": "inconnue",
    "enquêter": "inconnue",
    "Repos sur le lit, conversation possible": "inconnue"
}
df["Catégorie d'état"] = [stat_dict[key] for key in df["patient_Statut"]]

Ceci termine l'affectation de la catégorie d'ère et de la catégorie d'état. Vous pouvez vérifier comment il a été réellement attribué avec la méthode head.

df.head()

table2.png

Agrégation du nombre de personnes gravement malades par âge

Maintenant que les catégories sont prêtes, commençons à compter le nombre de patients par catégorie de statut. Nous avons adopté le tableau croisé par tableau croisé pour l'agrégation.

//Japaneseisation de matplotlib
pip install japanize-matplotlib
import japanize_matplotlib
import seaborn as sns
sns.set(font="IPAexGothic")

pd.crosstab(df["Catégorie d'âge"], df["Catégorie d'état"]).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

Le nombre de cas modérés et graves étant globalement faible (moins de 10%), l'axe des y est affiché de manière logarithmique.

On dit souvent que le coronavirus reste bénin chez les jeunes et a tendance à s'aggraver chez les personnes âgées, mais lorsqu'il est effectivement tabulé, cette tendance est certainement observée.

Il n'y a quasiment pas de cas modérés ou sévères jusqu'aux années 30, et la proportion de cas gravement malades augmente nettement proportionnellement à l'âge de la quarantaine aux années 80 **.

Résumé

Cette fois, en utilisant les données d'attributs des personnes positives au coronavirus à Hokkaido, il a été confirmé que le taux de gravité augmente proportionnellement à l'âge.

De cette manière, vous pouvez obtenir des connaissances plus précises en ** analysant vous-même les données primaires publiées par les gouvernements nationaux et préfectoraux **.

Les données ouvertes ne sont pas toujours correctes, mais pourquoi ne pas essayer la méthode présentée ici comme l'un des moyens d'obtenir rapidement des informations aussi précises que possible.

c'est tout.

Recommended Posts

Analyser la gravité spécifique à l'âge du coronavirus
Estimer le pic d'infectivité du nouveau virus corona
Simulation GUI du nouveau virus corona (modèle SEIR)
Le début de cif2cell
Le sens de soi
le zen de Python
L'histoire de sys.path.append ()
Testons l'hypothèse d'effondrement médical du nouveau virus corona
La vengeance des types: la vengeance des types
Visualisons le nombre de personnes infectées par le virus corona avec matplotlib
Quantifier le degré d'autolimitation nécessaire pour contenir le nouveau virus corona
Ce que j'ai vu en analysant les données du marché des ingénieurs
Aligner la version de chromedriver_binary
Grattage du résultat de "Schedule-kun"
10. Compter le nombre de lignes
L'histoire de la construction de Zabbix 4.4
Vers la retraite de Python2
Comparez les polices de jupyter-themes
Obtenez le nombre de chiffres
Expliquez le code de Tensorflow_in_ROS
Réutiliser les résultats du clustering
GoPiGo3 du vieil homme
Calculez le nombre de changements
Changer le thème de Jupyter
La popularité des langages de programmation
Changer le style de matplotlib
Visualisez la trajectoire de Hayabusa 2
À propos des composants de Luigi
Composants liés du graphique
Filtrer la sortie de tracemalloc
À propos des fonctionnalités de Python
Simulation du contenu du portefeuille
Le pouvoir des pandas: Python
Je l'ai découvert en analysant les avis du site de changement d'emploi! ??