Introduction
Nous créons un package Python CovsirPhy qui vous permet de télécharger et d'analyser facilement les données COVID-19 (comme le nombre de PCR positifs).
Article d'introduction:
La version anglaise du document est CovsirPhy: COVID-19 analysis with phase-depend SIRs, Kaggle: COVID-19 data with SIR model.
** Cette fois, je vais vous expliquer comment télécharger les données réelles du COVID-19. ** ** Édition anglaise:
CovsirPhy peut être installé par la méthode suivante! Veuillez utiliser Python 3.7 ou supérieur, ou Google Colaboratory.
--Version stable: pip install covsirphy --upgrade
--Version de développement: pip install" git + https://github.com/lisphilar/covid19-sir.git#egg=covsirphy "
#Pour l'affichage des données
from pprint import pprint
# CovsirPhy
import covsirphy as cs
cs.__version__
# '2.8.2'
Environnement d'exécution | |
---|---|
OS | Windows Subsystem for Linux |
Python | version 3.8.5 |
Les tableaux et graphiques de cet article ont été créés à partir des données du 11/09/2020.
Vous pouvez télécharger les données dans les 4 lignes suivantes.
data_loader = cs.DataLoader("input")
jhu_data = data_loader.jhu()
population_data = data_loader.population()
oxcgrt_data = data_loader.oxcgrt()
Les 3 types de données suivants sont automatiquement enregistrés dans le répertoire (dossier) «input» du COVID-19 Data Hub [^ 1]. Il fait également une bonne mise en forme des données.
Le formatage des données se fait du côté CovsirPhy, mais le téléchargement des données lui-même dépend du package officiel covid19dh
de COVID-19 Data Hub. Nous travaillons également avec les développeurs [^ 2] pour éviter les erreurs, mais si quelque chose se passe page de problème CovsirPhy Veuillez nous contacter à partir de!
data_loader = cs.DataLoader("input")
Le nom du répertoire peut être modifié. La valeur par défaut du premier argument est "input" et peut être omise.
# verbose=True:Afficher la source des données au moment du téléchargement
jhu_data = data_loader.jhu(verbose=True)
type(jhu_data)
# -> <class 'covsirphy.cleaning.jhu_data.JHUData'>
À l'origine, j'ai utilisé le nom de méthode "jhu" parce que j'ai téléchargé directement les données de l'Université John's Hopkins.
La source des données [^ 3] peut être confirmée à partir de l'instance de DataLoader
.
[^ 3]: COVID-19 Data Hub est une donnée secondaire! Sur la base des données de l'Université John's Hopkins, etc., un prétraitement tel que le traitement des valeurs manquantes est effectué du côté de la base de données. Merci beaucoup.
# COVID-19 Informations sur le concentrateur de données-> (Résultat de sortie omis)
print(jhu_data.citation)
#Liste des sources de données-> (Résultat de sortie omis)
print(data_loader.covid19dh_citation)
#Afficher les données téléchargées(pandas.DataFrame) -> (Résultat de sortie omis)
jhu_data.raw.tail()
Par JHUData.cleaned ()
, les données de date / nom du pays / nom de la région / nombre total de cas confirmés (nombre de positifs PCR) / nombre actuel de personnes infectées / nombre total de décès / nombre total de guérisseurs sont stockées au format de base de données ( Vous pouvez l'obtenir avec pandas.DataFrame
).
jhu_data.cleaned().tail()
Date | Country | Province | Confirmed | Infected | Fatal | Recovered | |
---|---|---|---|---|---|---|---|
211098 | 2020-09-07 | Colombia | Vichada | 14 | 0 | 0 | 14 |
211099 | 2020-09-08 | Colombia | Vichada | 14 | 0 | 0 | 14 |
211100 | 2020-09-09 | Colombia | Vichada | 14 | 0 | 0 | 14 |
211101 | 2020-09-10 | Colombia | Vichada | 14 | 0 | 0 | 14 |
211102 | 2020-09-11 | Colombia | Vichada | 14 | 0 | 0 | 14 |
Selon le pays, la valeur pour l'ensemble du pays et la valeur pour chaque région sont enregistrées, il n'est donc pas possible d'obtenir les données agrégées correctes pour chaque pays avec jhu_data.cleaned (). Groupby (" Country "). Sum ()
. Par conséquent, nous avons préparé une méthode «JHUData.subset (pays, province)» qui récupère les données pour un pays ou une région spécifique. Les colonnes des noms de pays et de région sont omises de la sortie.
#Sélectionnez uniquement le nom du pays-> (Résultat de sortie omis)
jhu_data.subset(country="Japan")
#Le code ISO3 est OK pour le nom du pays-> (Résultat de sortie omis)
jhu_data.subset(country="JPN")
#Sélectionnez le nom local
jhu_data.subset(country="JPN", province="Tokyo").tail()
Date | Confirmed | Infected | Fatal | Recovered | |
---|---|---|---|---|---|
172 | 2020-09-07 | 21849 | 2510 | 372 | 18967 |
173 | 2020-09-08 | 22019 | 2470 | 378 | 19171 |
174 | 2020-09-09 | 22168 | 2349 | 379 | 19440 |
175 | 2020-09-10 | 22444 | 2478 | 379 | 19587 |
176 | 2020-09-11 | 22631 | 2439 | 380 | 19812 |
Remarque: Il s'agit de la 4e donnée (Tokyo / pays / organisation nationale de bénévoles / Hub de données COVID-19) et peut différer des chiffres annoncés par le gouvernement métropolitain de Tokyo.
Si vous souhaitez créer un graphe de séries chronologiques, veuillez utiliser la fonction cs.line_plot ()
(la fonction peut être obsolète et classée, nous la considérons donc).
cs.line_plot(
subset_df.set_index("Date").drop("Confirmed", axis=1),
title="Japan/Tokyo: cases over time",
filename=None, #Définir le nom du fichier lors de la sortie vers un fichier
y_integer=True, #Remplacez l'axe y par une valeur entière. N'utilisez pas x10 etc.
)
De plus, nous avons préparé une méthode JHUData.total ()
pour obtenir la valeur totale du monde entier. Livré avec des données de pourcentage.
jhu_data.total().tail()
Date | Confirmed | Infected | Fatal | Recovered | Fatal per Confirmed | Recovered per Confirmed | Fatal per (Fatal or Recovered) |
---|---|---|---|---|---|---|---|
2020-09-07 | 2.71499e+07 | 8.06515e+06 | 890441 | 1.81943e+07 | 0.0163986 | 0.335071 | 0.0466573 |
2020-09-08 | 2.73868e+07 | 8.10302e+06 | 895203 | 1.83886e+07 | 0.0163437 | 0.33572 | 0.0464225 |
2020-09-09 | 2.76653e+07 | 8.15167e+06 | 901058 | 1.86126e+07 | 0.016285 | 0.336388 | 0.0461758 |
2020-09-10 | 2.7954e+07 | 8.2298e+06 | 906678 | 1.88175e+07 | 0.0162173 | 0.33658 | 0.0459678 |
2020-09-11 | 2.79547e+07 | 8.22937e+06 | 906696 | 1.88187e+07 | 0.0162172 | 0.336592 | 0.045966 |
population_data = data_loader.population()
print(type(population_data))
# -> <class 'covsirphy.cleaning.population.PopulationData'>
Vous pouvez obtenir des données de code ISO3 / pays / région / date / population avec PopulationData.cleaned ()
. Veuillez également utiliser PopulationData.value (country, province)
pour obtenir la valeur de chaque pays / région.
#Obtenir des données formatées au format de trame de données->Résultat de sortie omis
population_data.cleaned().tail()
#Sélectionnez uniquement le nom du pays-> int
population_data.value(country="Japan")
#Le code ISO3 est OK pour le nom du pays-> int
population_data.value(country="JPN")
#Sélectionnez le nom local-> int
population_data.value(country="JPN", province="Tokyo")
Les valeurs de population peuvent être mises à jour avec la méthode PopulationData.update (valeur, pays, province)
.
#Avant la mise à jour-> 13942856
population_data.value(country="Japan", province="Tokyo")
#mise à jour
# https://www.metro.tokyo.lg.jp/tosei/hodohappyo/press/2020/06/11/07.html
population_data.update(14_002_973, "Japan", province="Tokyo")
#Après la mise à jour-> 14002973
population_data.value("Japan", province="Tokyo")
oxcgrt_data = data_loader.oxcgrt()
print(type(oxcgrt_data))
# -> <class 'covsirphy.cleaning.oxcgrt.OxCGRTData'>
Avec ʻOxCGRTData.cleaned () , vous pouvez obtenir les données du code ISO3 / nom du pays / date / chaque index. Les données régionales ne sont pas incluses. ʻOxCGRTData.subset (country)
ne peut pas non plus spécifier de nom de région.
#Obtenir des données formatées au format de trame de données->Résultat de sortie omis
oxcgrt_data.cleaned().tail()
#Seul le nom du pays peut être sélectionné
oxcgrt_data.subset(country="Japan")
#Le code ISO3 est OK pour le nom du pays
oxcgrt_data.subset(country="JPN")
Date | School_closing | Workplace_closing | Cancel_events | Gatherings_restrictions | Transport_closing | Stay_home_restrictions | Internal_movement_restrictions | International_movement_restrictions | Information_campaigns | Testing_policy | Contact_tracing | Stringency_index | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
247 | 2020-09-07 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 3 | 2 | 2 | 1 | 30.56 |
248 | 2020-09-08 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 3 | 2 | 2 | 1 | 30.56 |
249 | 2020-09-09 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 3 | 2 | 2 | 1 | 30.56 |
250 | 2020-09-10 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 3 | 2 | 2 | 1 | 30.56 |
251 | 2020-09-11 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 3 | 2 | 2 | 1 | 30.56 |
Cette fois, j'ai expliqué comment acquérir chaque donnée en utilisant CovsirPhy. J'ai fait de mon mieux pour l'obtenir facilement avec un code court, alors veuillez l'utiliser! Nous apprécions vos commentaires.
La prochaine fois, j'écrirai un article sur l'explication de la méthode d'analyse en utilisant des données réelles. En plus des exemples d'utilisation, je voudrais décrire autant que possible le contexte technique. Je vous remercie!
Je vous remercie pour votre travail acharné!
Recommended Posts