[PYTHON] (Maintenant) j'ai essayé d'analyser le nouveau virus corona (COVID-19)

introduction

Le 16 janvier 2020, une nouvelle infection à coronavirus (nom de la maladie) causée par le SRAS-CoV-2 (nom du virus) a été confirmée pour la première fois au Japon. Malheureusement, la maladie a tué de nombreuses personnes, des gens ordinaires aux célébrités. Même maintenant, plus de six mois après cela, la mode ne s'est pas calmée et les masques sont une nécessité pour sortir. Dans cet article, nous avons brièvement analysé et résumé le virus corona au Japon. J'espérais que cette analyse me donnerait une certaine prise de conscience et améliorerait mes capacités d'analyse.

Préparation des données

Pour analyser le virus corona cette fois, nous avons utilisé les données CSV publiées par Jag Japan Co., Ltd.. Merci beaucoup. Je publierai le lien ci-dessous.

À propos de "Carte du nombre de personnes infectées par le nouveau virus corona" スクリーンショット 2020-08-30 12.56.46.png

environnement

Essayez d'analyser

1. Importez les bibliothèques requises

COVID-19.ipynb


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

2. Lisez le fichier CSV

COVID-19.ipynb


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

Dans JupyterLab, s'il y a beaucoup de colonnes, l'affichage sera omis, donc affichez tout dans la première ligne.

3. Vérifiez l'âge de la personne infectée

COVID-19.ipynb


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

Résultat d'exécution


90 ou plus 1
Années 90 1
100         2
Années 80 7
Jeune 9
Années 70 10
60 ans 12
90         14
50 ans 25
30 ans 33
40 ans 33
80         44
20 ans 49
10         66
70         69
60        128
40        167
50        179
30        203
20        310
90       1040
Inconnu 1145
0-10     1335
80       2645
10       2952
70       3751
60       4531
50       7355
40       8315
30      10551
20      18009
Name:Âge, dtype: int64

Comme il n'y a pas de notation unique telle que 20 et 20, le nombre de résultats de sortie a augmenté. Je vais essayer d'unifier la notation en utilisant df.replace ().

COVID-19.ipynb


df = df.replace({'Âge':{'0-10':'under10','10 ans':'10','20 ans':'20', '30 s':'30', 'Quarante':'40', 'Années 50':'50', 'Années 60':'60', 'Années 70':'70', 'Années 80':'80', 'Années 90':'90' , 'inconnue':'unknown', '90 et plus':'90~'}})
age2 = df['Âge'].value_counts()
age2

Résultat de sortie


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:Âge, dtype: int64

J'ai pu supprimer l'affichage de sortie plus qu'auparavant. (J'ai essayé diverses choses parce que je voulais obtenir le total avec les mêmes chiffres, mais cela n'a pas fonctionné, donc je vais laisser cela comme une tâche future.) C'est un peu difficile à voir, alors je vais le visualiser avec un graphique.

COVID-19.ipynb


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

Age of infected person.png En faire un graphique facilite la compréhension visuelle. En regardant ce graphique, nous pouvons voir que les jeunes générations, comme celles dans la vingtaine, la trentaine, la quarantaine, etc., sont plus infectées. En particulier, le grand nombre de personnes infectées dans la vingtaine est évident.

4. Vérifiez le nombre de personnes infectées par sexe

COVID-19.ipynb


df = df.replace({'sexe':{'Masculin':'male', 'Femme':'female', 'inconnue':'unknown'}})
sex = df['sexe'].value_counts()

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

#print(sex) #Affichage lorsque vous souhaitez connaître le nombre détaillé de personnes infectées par sexe
sex.plot.bar()

Infected_sex.png

Quand je l'ai vérifié dans un graphique, j'ai trouvé que le nombre de personnes infectées était plus élevé chez les hommes. Je pense que l'infection ne dépend pas du sexe des êtres humains, mais je pense que le but et le comportement lors des sorties sont différents, donc si je peux le savoir en détail, je m'attends à ce que la relation entre les sexes dans le nombre d'infections puisse être déterminée.

5. Vérifiez l'augmentation / la diminution de la réaction positive

COVID-19.ipynb


fixed_date = df['Date fixe']
fixed_date = collections.Counter(fixed_date)
#fixed_date #Comme il y a beaucoup de sortie, le résultat de l'exécution est omis.

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 Si vous consultez le graphique, vous pouvez voir que les patients positifs ont été confirmés à partir de janvier, et bien que le nombre ait fortement augmenté vers avril et temporairement guéri, il a de nouveau augmenté en juillet et a atteint un sommet vers août. En faisant un graphique, nous avons pu confirmer la deuxième vague du nouveau virus corona. Depuis la fin du graphique, le nombre de patients positifs confirmés a fortement diminué, donc j'ai hâte d'y être à l'avenir.

6. Tracez les emplacements où l'infection corona a été confirmée sur la carte

J'ai des données de coordonnées X et Y dans CSV, donc je vais les tracer. Cette fois, j'ai fait référence à cet article.

COVID-19.ipynb


#Installez-le car il est nécessaire pour utiliser les géopandas
pipenv install geopandas
pipenv install descartes

#Représentez les données cartographiques d'origine
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


#Essayez d'entrer les coordonnées XY du CSV
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 Si vous regardez de près les points tracés, ils sont rassemblés de manière significative dans le coin supérieur droit ... alors développons-le.

COVID-19.ipynb


map_1.plot(figsize=(10,10), edgecolor='#444', facecolor='white', linewidth = 1);
plt.xlim([120,150]) #Définissez la plage que vous souhaitez étendre(Tout)
plt.ylim([30,46]) #Définissez la plage que vous souhaitez étendre(Tout)
plt.scatter(df['X'],df['Y'])
plt.show()

スクリーンショット 2020-08-30 15.52.15.png J'ai pu confirmer que j'étais capable de tracer fermement. Vous pouvez voir sur cette carte que le virus corona est répandu dans tout le pays. Il s'est avéré qu'il y avait beaucoup de personnes infectées dans la région de Kyushu dans son ensemble, sans parler de la région de Kanto. Il est très effrayant de penser qu'il peut y avoir un risque d'infection où que vous alliez.

7. Résumé

Je pense qu'il y a certains points que je n'ai pas atteints puisque c'est mon premier article sur qiita, mais je suis très heureux d'avoir aimé analyser et créer des articles. C'est une analyse simple, mais je suis très content car j'ai pu essayer quelque chose de nouveau pour moi-même en traçant des coordonnées sur une carte. À l'avenir, j'aimerais relever le défi d'une analyse corona plus approfondie. C'est une période difficile avec le virus corona, mais s'il vous plaît, aimez-vous.

Recommended Posts

(Maintenant) j'ai essayé d'analyser le nouveau virus corona (COVID-19)
J'ai analysé les tweets sur le nouveau virus corona publiés sur Twitter
J'ai analysé les tweets sur le nouveau virus corona publiés sur Twitter, partie 2
Tracez la propagation du nouveau virus corona
J'ai essayé de classer le nombre de décès par habitant de COVID-19 (nouveau virus corona) par pays
Estimer le pic d'infectivité du nouveau virus corona
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé l'analyse du SRAS avant le virus corona
J'ai touché certaines des nouvelles fonctionnalités de Python 3.8 ①
Simulation GUI du nouveau virus corona (modèle SEIR)
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de résumer les nouvelles personnes infectées par le virus corona dans la ville d'Ichikawa, préfecture de Chiba
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
Testons l'hypothèse d'effondrement médical du nouveau virus corona
J'ai compté les grains
Quantifier le degré d'autolimitation nécessaire pour contenir le nouveau virus corona
J'ai essayé d'utiliser des données PDF de soins médicaux en ligne basés sur la propagation d'une nouvelle infection à coronavirus