Outils pour utilisateurs

Outils du site


issue157:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue157:python [2020/06/06 08:03] d52frissue157:python [2020/06/06 13:52] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 We are presented with the number of confirmed cases, number of deaths and number of hospitalizations due to COVID-19 on every TV news show, radio show and on the Internet.  Where are these numbers coming from and how do we make sense of them?  Luckily, those of us who know Python with just a little work can do some of the data analysis for ourselves and with logic can see what the trends are really doing.  The goal here is not to provide any answers, but to give you the ability to look at the data and see the trends for yourself.  As the saying goes, “knowledge is power”.** We are presented with the number of confirmed cases, number of deaths and number of hospitalizations due to COVID-19 on every TV news show, radio show and on the Internet.  Where are these numbers coming from and how do we make sense of them?  Luckily, those of us who know Python with just a little work can do some of the data analysis for ourselves and with logic can see what the trends are really doing.  The goal here is not to provide any answers, but to give you the ability to look at the data and see the trends for yourself.  As the saying goes, “knowledge is power”.**
  
-Nous faisons tous l'expérience d'un nouveau monde avec le COVID-19. L'ordre de rester chez soi, l'ordre de travailler depuis la maison, les entreprises fermées, les emplois perdus, de longues files d'attentes devant les épiceries, des ruptures de stock quand vous y entrez et la distanciation sociale. Toute cette nouveauté est normale, au moins pour un temps. Beaucoup d'« experts » laissent penser que nous ne retournerons pas à l'« ancien » temps normal et même suggèrent que ce sera comme ça pendant un an ou plus.+Nous faisons tous l'expérience d'un nouveau monde avec le COVID-19. L'ordre de rester chez soi, l'ordre de travailler depuis la maison, les entreprises fermées, les emplois perdus, de longues files d'attente devant les épiceries, des ruptures de stock quand vous y entrez et la distanciation sociale. Toute cette nouveauté est normale, au moins pour un temps. Beaucoup d'« experts » laissent penser que nous ne retournerons pas à l'« ancien » temps normal et même suggèrent que ça durera pendant un an ou plus.
  
-À chaque journal télévisé, à chaque point de presse à la radio et sur Internet, il nous est montré un certain nombre de cas confirmés, de nombreux décès et beaucoup d'hospitalisations dues au COVID-19. D'où viennent ces chiffres et comment nous les comprenons ? Par chance, ceux d'entre nous qui connaissent Python peuvent, avec juste un peu de travail, faire un peu d'analyse des données par eux-mêmes et, avec un peu de logique, peuvent voir quelles sont les tendances réelles. Ici, l'objectif n'est pas de fournir des réponses, mais de vous donner la capacité de regarder les données et de voir vous-même les tendances. Comme il est souvent dit, « savoir, c'est pouvoir ».+À chaque journal télévisé, à chaque point de presse à la radio et sur Internet, il nous est montré un certain nombre de cas confirmés, de décèset beaucoup d'hospitalisations dues au COVID-19. D'où viennent ces chiffres et comment les comprendre ? Par chance, ceux d'entre nous qui connaissent Python peuvent, avec juste un peu de travail, faire un peu d'analyse des données et, avec un peu de logique, peuvent appréhender les tendances réelles. Ici, l'objectif n'est pas de fournir des réponses, mais de vous donner la capacité de regarder les données et de voir vous-même les tendances. Comme il est souvent dit, « savoir, c'est pouvoir ».
  
 **Way back in December 2018 (FCM#140), I talked about Pandas and Python.  This month, we will use Pandas and Python to look at some of these numbers and make the graphs for ourselves.  If you don’t have Pandas installed, please re-visit Full Circle Magazine # 140 to see the installation steps. **Way back in December 2018 (FCM#140), I talked about Pandas and Python.  This month, we will use Pandas and Python to look at some of these numbers and make the graphs for ourselves.  If you don’t have Pandas installed, please re-visit Full Circle Magazine # 140 to see the installation steps.
Ligne 15: Ligne 15:
 Now use LibreOffice Calc (or some other spreadsheet viewer) to open the file.  In theory, you should be able to simply double click on the downloaded file.  Accept the import settings box.** Now use LibreOffice Calc (or some other spreadsheet viewer) to open the file.  In theory, you should be able to simply double click on the downloaded file.  Accept the import settings box.**
  
-En décembre 2018 (FCM n° 140), j'ai parlé de Pandas et Python. Ce mois-ci, nous utiliserons Pandas et Python pour regarder certains de ces chiffres et en faire des graphiques. Si Pandas n'est pas installé sur votre machine, retournez dans le FCM n° 140 pour les étapes de l'installation.+En décembre 2018 (le FCM n° 140), j'ai parlé de Pandas et Python. Ce mois-ci, nous utiliserons Pandas et Python pour regarder certains de ces chiffres et en faire des graphiques. Si Pandas n'est pas installé sur votre machine, retournez dans le FCM n° 140 pour les étapes de l'installation.
  
-Pour commencer, nous avons besoin de quelques données. Je vais utiliser un jeu de données CVS (Comma Separated Variables - Variables séparées par une virgule) disponible sur https://data.humdata.org/dataset/novel-coronavirus-2019-ncov-cases. Ces données sont compilées par le Johns Hopkins University Center for Systems Science and Engineering (JHU CCSE) et viennent de nombreuses sources « de confiance ». ce site donne aussi des données sur les décès et les guérisons.+Pour commencer, nous avons besoin de quelques données. Je vais utiliser un jeu de données CVS (Comma Separated Variables - Variables séparées par une virgule) disponible sur https://data.humdata.org/dataset/novel-coronavirus-2019-ncov-cases. Ces données sont compilées par le Johns Hopkins University Center for Systems Science and Engineering (JHU CCSE) et viennent de nombreuses sources « de confiance ». Ce site donne aussi des données sur les décès et les guérisons.
  
-Quand vous arrivez sur la page, descendez en bas de tableau et trouvez le premier bouton « download » qui indique « time_series_covid19_confirmed_global.csv » à sa gauche. Cela téléchargera le fichier .csv sur votre machine.+Quand vous arrivez sur la page, descendez sous le tableau et trouvez le premier bouton « download » qui indique « time_series_covid19_confirmed_global.csv » à sa gauche. Cela téléchargera le fichier .csv sur votre machine.
  
 Maintenant, utilisez LibreOffice Calc (ou un autre tableur) pour ouvrir le fichier. En théorie, vous ne devriez avoir qu'à double-cliquer sur le fichier téléchargé. Acceptez la fenêtre des paramètres d'importation. Maintenant, utilisez LibreOffice Calc (ou un autre tableur) pour ouvrir le fichier. En théorie, vous ne devriez avoir qu'à double-cliquer sur le fichier téléchargé. Acceptez la fenêtre des paramètres d'importation.
Ligne 27: Ligne 27:
 The important thing to do here is to verify that the Country or Region that you are interested in is somewhere in Column B.  It might be partially in Column B and partially in Column A.  For example, if you are interested in Scotland, you would use the row marked “United Kingdom”, but if you want Greenland, you need to find “Denmark” in Column B then “Greenland” in Column A.  For the purposes of this article, we’ll use “US” which is around row 227 (at least for now).** The important thing to do here is to verify that the Country or Region that you are interested in is somewhere in Column B.  It might be partially in Column B and partially in Column A.  For example, if you are interested in Scotland, you would use the row marked “United Kingdom”, but if you want Greenland, you need to find “Denmark” in Column B then “Greenland” in Column A.  For the purposes of this article, we’ll use “US” which is around row 227 (at least for now).**
  
-MERCI DE NOTER : J'utilise les données que j'ai téléchargé le 5 mai 2020. Les vôtres seront un peu différentes, principalement parce qu'il y aura plus de données, colonnes acomme lignes (car d'autres régions peuvent être ajoutées avec de nouveaux cas s'étendant à d'autres pays).+MERCI DE NOTER : J'utilise les données que j'ai téléchargées le 5 mai 2020. Les vôtres seront un peu différentes, principalement parce qu'il y aura plus de données, colonnes comme lignes (car d'autres régions peuvent être ajoutées avec de nouveaux cas s'étendant à d'autres pays).
  
-La chose importante à faire ici est de vérifier que le pays ou la région qui vous intéresse est quelque part dans la colonne B. Elle peut être en partie dans la colonne B et en partie dans la colonne A. Par exemple, si vous vous intéressez à l'Écosse, vous utiliserez la ligne marquée « United Kingdom » (Royaume-Uni) mais si vous voulez le Groenland, vous aurez besoin de trouver « Denmark » dans la colonne B puis « Greenland » dans la colonne A. Pour les besoins de cet article, nous utiliserons « US » qui est aux environs de la ligne 227 (au moins quand j'écris).+La chose importante à faire ici est de vérifier que le pays ou la région qui vous intéresse est quelque part dans la colonne B. Elle peut être en partie dans la colonne B et en partie dans la colonne A. Par exemple, si vous vous intéressez à l'Écosse, vous utiliserez la ligne marquée « United Kingdom » (Royaume-Uni)mais si vous voulez le Groenland, vous aurez besoin de trouver « Denmark » dans la colonne B puis « Greenland » dans la colonne A. Pour les besoins de cet article, nous utiliserons « US » qui est aux environs de la ligne 227 (au moins à ce moment précis).
  
 **Create a convenient folder somewhere, copy the CSV file into the folder and open a terminal window in that folder.  ( I use “Open in Terminal” from the GUI File manager.) **Create a convenient folder somewhere, copy the CSV file into the folder and open a terminal window in that folder.  ( I use “Open in Terminal” from the GUI File manager.)
Ligne 37: Ligne 37:
 Look at the last line of the pandas head/tail dump.  It says that there are 266 rows and 108 columns.  We’ll get some of that information in a few moments.  For right now, we’ll just grab the row that contains data for the US.  If you wanted to find “Greenland”, use ‘Province/State” instead of ‘Country/Region’ in the line above.** Look at the last line of the pandas head/tail dump.  It says that there are 266 rows and 108 columns.  We’ll get some of that information in a few moments.  For right now, we’ll just grab the row that contains data for the US.  If you wanted to find “Greenland”, use ‘Province/State” instead of ‘Country/Region’ in the line above.**
  
-Créez un dossier quelque part à votre guise, copiez-y le fichier CSV et ouvrez une fenêtre de terminal dans ce dossier. (j'utilise « Ouvrir dans un terminal » à partir du Gestionnaire graphique de fichiers).+Créez un dossier quelque part à votre guise, copiez-y le fichier CSV et ouvrez une fenêtre de terminal dans ce dossier. (J'utilise « Ouvrir dans un terminal » à partir du Gestionnaire graphique de fichiers).
  
 Il est temps maintenant de faire un peu de codage. Nous utiliserons l’interpréteur Python pour cet exemple. Voyez l'encadré ci-dessus. Il est temps maintenant de faire un peu de codage. Nous utiliserons l’interpréteur Python pour cet exemple. Voyez l'encadré ci-dessus.
  
-Regardez le dernière ligne de l'extraction complète par pandas. Il est dit que le tableau fait 266 lignes et 108 colonnes. Nous récupérerons quelques unes de ces informations dans un petit moment. Pour l'instant, nus allons retrouver la ligne qui contient les données pour les USA. Si vous voulez chercher « Greenland », utilisez « Province/State » à la place de « Country/Region » dans la ligne ci-dessus. +Regardez le dernière ligne de l'extraction complète par Pandas. Il dit que le tableau fait 266 lignes et 108 colonnes. Nous récupérerons quelques-unes de ces informations dans un petit moment. Pour l'instant, nous allons retrouver la ligne qui contient les données pour les USA. Si vous voulez chercher « Greenland », utilisez « Province/State » à la place de « Country/Region » dans la ligne au-dessus. 
  
 **Again, here we want to verify a few things.  First, that the last data column is for the proper date (which is marked as “5/4/20”), the proper country and that there are (still) 108 columns.  Secondly, the actual row data is shown here as 225.  In the spreadsheet, however, it shows up as 227.  That’s because there is a header row and (remember) Python is ZERO BASED. **Again, here we want to verify a few things.  First, that the last data column is for the proper date (which is marked as “5/4/20”), the proper country and that there are (still) 108 columns.  Secondly, the actual row data is shown here as 225.  In the spreadsheet, however, it shows up as 227.  That’s because there is a header row and (remember) Python is ZERO BASED.
Ligne 55: Ligne 55:
 >>>** >>>**
  
-À nouveau ici, nous voulons vérifier quelques points. D'abord, que la dernière colonne est pour la bonne date (qui est marquée « 5/4/20 »), le bon pays et qu'il y a (encore) 108 colonnes. En second, la vraie ligne des données est située en 225. Dans le tableur, cependant, elle est en 227. C'est parce qu'il y a la ligne d'entête et que Python commence sa numérotation à ZÉRO.+À nouveau, nous voulons vérifier quelques points. D'abord, que la dernière colonne est pour la bonne date (qui est marquée « 5/4/20 »), le bon payset qu'il y a (encore) 108 colonnes. En second, la vraie ligne des données est située en 225. Dans le tableur, cependant, elle est en 227. C'est parce qu'il y a la ligne d'entête et que Python commence sa numérotation à ZÉRO.
  
-Maintenant, nous avons des données avec lesquelles jouer. Maisnous avons besoin d'un peu plus d'informations pour faciliter notre programmation.+Maintenant, nous avons des données avec lesquelles jouer. Mais nous avons besoin d'un peu plus d'informations pour faciliter notre programmation.
  
 >>> sh = data.shape >>> sh = data.shape
Ligne 73: Ligne 73:
 So we now have data that we can use, but the data was extracted, it came back as a data series, not a data frame.  So, we’ll convert it to a dataframe. See bottom right. See bottom right.** So we now have data that we can use, but the data was extracted, it came back as a data series, not a data frame.  So, we’ll convert it to a dataframe. See bottom right. See bottom right.**
  
-Ici, nous utilisons data.shape() pour obtenir le nombre de lignes et le nombre de colonnes du jeu de données. Ceci est retourné comme un tuple ; aussi, nous pouvons assigner une variable « lastcol » aux 108 (sh[1]) de la variable sh.+Ici, nous utilisons data.shape() pour obtenir le nombre de lignes et le nombre de colonnes du jeu de données. Cela est retourné comme un tuple ; aussi, nous pouvons assigner une variable « lastcol » aux 108 (sh[1]) de la variable sh.
  
-Maintenant (en haut à droite), nous ne récupérerons que les colonnes qui contiennent le nombre de cas confirmés (Colonne E ou 4 - attention, début à zéro) via lastcol (108) pour la ligne 225. Nous utiliserons la méthode .iloc pour récupérer la ligne, la première et le dernière colonnes du jeu de données et les assigner à la variable sla.+Maintenant (en haut à droite), nous ne récupérerons que les colonnes qui contiennent le nombre de cas confirmés (Colonne E ou 4 - attention, début à zéro) via lastcol (108) pour la ligne 225. Nous utiliserons la méthode .iloc pour récupérer la ligne, la première et la dernière colonnes du jeu de données et les assigner à la variable sla.
  
 Ainsi, nous avons maintenant des données que nous pouvons utiliser ; mais les données ont été extraites, sous la forme d'une série de données, pas d'un jeu de données. Aussi, nous devons les convertir en jeu de données. Voir en bas à droite. Ainsi, nous avons maintenant des données que nous pouvons utiliser ; mais les données ont été extraites, sous la forme d'une série de données, pas d'un jeu de données. Aussi, nous devons les convertir en jeu de données. Voir en bas à droite.
Ligne 95: Ligne 95:
 Ainsi, nous avons maintenant des données avec lesquelles jouer, ou presque. Mais d'abord, commençons par donner des noms clairs et compréhensibles aux entêtes de colonnes. Nous changerons « index » en « dtstring » et l'entête 225 de la deuxième colonne (un nombre, pas du texte) par « Cases » (Cas). Voir en haut à droite. Ainsi, nous avons maintenant des données avec lesquelles jouer, ou presque. Mais d'abord, commençons par donner des noms clairs et compréhensibles aux entêtes de colonnes. Nous changerons « index » en « dtstring » et l'entête 225 de la deuxième colonne (un nombre, pas du texte) par « Cases » (Cas). Voir en haut à droite.
  
-C'est un tracé très chargé (en bas à droite), mais vous pouvez vraiment voir le même genre de données que celles que vous voyez dans les journaux.+C'est un tracé très chargé (en bas à droite), mais vous pouvez vraiment voir le même genre de données que celles qui paraissent dans les journaux.
  
-Pour la partie suivante de notre examen des données, nous avons besoin de calculer le nombre de nouveaux cas d'un jour sur l'autre. C'est SUPER facile avec la méthode .shift() disponible dans Pandas (ci-dessous).+Pour la partie suivante de notre examen des données, nous devons calculer le nombre de nouveaux cas d'un jour sur l'autre. C'est SUPER facile avec la méthode .shift() disponible dans Pandas (ci-dessous).
  
-Maintenant, faisons apparaître les écarts quotidiens sur un graphique...+Maintenant, faisons apparaître les écarts quotidiens sur un graphique :
  
 >>> df.plot(kind='line',x='dtstring',y='diff',color='red') >>> df.plot(kind='line',x='dtstring',y='diff',color='red')
Ligne 122: Ligne 122:
 s1a = data.iloc[175,4:lastcol]** s1a = data.iloc[175,4:lastcol]**
  
-Maintenant que nous avons les bases pour traiter les données simples, vous pouvez retourner au début, là où nous avons extrait les données pour les USA et changer pour le pays ou la région de votre choix. Par exemple, modifiez la ligne...+Maintenant que nous avons les bases pour traiter les données simples, vous pouvez retourner au début, là où nous avons extrait les données pour les USA et changer pour le pays ou la région de votre choix. Par exemple, modifiez la ligne :
  
 s1 = data.loc[data['Country/Region']=='US'] s1 = data.loc[data['Country/Region']=='US']
Ligne 130: Ligne 130:
 s1 = data.loc[data['Country/Region']=='Norway'] s1 = data.loc[data['Country/Region']=='Norway']
  
-Si vous imprimez les données de s1, vous verrez que la ligne de la Norvège est la 175. Aussi, avec la ligne suivante, où nous n'obtenons que les colonnes de données pour cette ligne (de la colonne 4 à la dernière)...+Si vous imprimez les données de s1, vous verrez que la ligne de la Norvège est la 175. Aussi, avec la ligne suivante, nous n'obtenons que les colonnes de données pour cette ligne (de la colonne 4 à la dernière) :
  
 s1a = data.iloc[225,4:lastcol] s1a = data.iloc[225,4:lastcol]
  
-vous pouvez la modifier en...+vous pouvez la modifier en :
  
 s1a = data.iloc[175,4:lastcol] s1a = data.iloc[175,4:lastcol]
Ligne 142: Ligne 142:
 What exactly should we take away from this data?  That’s a very good question.  The accuracy of this, is currently in somewhat of a (series) question.  There are speculations that suggest that the number of confirmed cases are low due to the lack and quality of testing of the population of many of the areas.  You can never be sure of the data, unless you gather it yourself.  In cases like this, you have no choice but to believe, with a grain of salt, that the data was taken with the best level of care.** What exactly should we take away from this data?  That’s a very good question.  The accuracy of this, is currently in somewhat of a (series) question.  There are speculations that suggest that the number of confirmed cases are low due to the lack and quality of testing of the population of many of the areas.  You can never be sure of the data, unless you gather it yourself.  In cases like this, you have no choice but to believe, with a grain of salt, that the data was taken with the best level of care.**
  
-Arrivés à ce point, vous pourriez répéter toutes les étapes précédentes pour créer et modifier les jeux de données de façon à les tracer.+À ce stade, vous pourriez répéter toutes les étapes précédentes pour créer et modifier les jeux de données de façon à les tracer.
  
-Qu'est-ce que nous tirons vraiement de ces données ? C'est une très bonne question. La précision de celles-ci est actuellement une question (de séries) en elle-même. Il y a des spéculations qui suggèrent que le nombre de cas confirmés est bas dans beaucoup de régions du fait du manque de tests sur la population. Vous ne pouvez jamais être sûr des données, sauf si vous les regroupez vous-même. Dans des cas comme celui-ci, votre seul choix est de croire, avec un petit grain de sel, que les données ont été relevées avec le plus grand soin. +Que devons-nous tirer vraiment de ces données ? C'est une très bonne question. La précision de celles-ci est actuellement une question (de séries) en elle-même. Il y a des spéculations qui suggèrent que le nombre de cas confirmés est bas dans beaucoup de régions du fait du manque de tests sur la population. Vous ne pouvez jamais être sûr des données, sauf si vous les regroupez vous-même. Dans des cas comme celui-ci, votre seul choix est de croire, avec un petit grain de sel, que les données ont été relevées avec le plus grand soin. 
  
 **WIth a little bit of creative web searches, you can find a lot more information on Pandas, various datasets and types of plots and options that you can use to show your data. **WIth a little bit of creative web searches, you can find a lot more information on Pandas, various datasets and types of plots and options that you can use to show your data.
Ligne 160: Ligne 160:
 **Now, we need to import two libraries, pandas and matplotlib.pyplot.  Make sure that you alias them as shown...** **Now, we need to import two libraries, pandas and matplotlib.pyplot.  Make sure that you alias them as shown...**
  
-Maintenant, nous devons importer deux bibliothèques, pandas and matplotlib.pyplot.  Assurez-vous que vous leur créez un alias comme indiqué... +Maintenant, nous devons importer deux bibliothèques, pandas and matplotlib.pyplot.  Assurez-vous que vous leur créez un alias comme indiqué :
 **Now, let’s set the filename of the .csv file into a variable…** **Now, let’s set the filename of the .csv file into a variable…**
  
-Maintenant, mettons le nom du fichier .csv dans une variable...+Maintenant, mettons le nom du fichier .csv dans une variable :
  
 **Next, have Pandas read the spreadsheet into a dataframe…** **Next, have Pandas read the spreadsheet into a dataframe…**
  
-Maintenant, faisons en sorte que Pandas lise le tableur vers le jeu de données...+Puis, faisons en sorte que Pandas lise le tableur vers le jeu de données :
  
 //Lignes noires de l'encadré de la page 24// //Lignes noires de l'encadré de la page 24//
issue157/python.1591423381.txt.gz · Dernière modification : 2020/06/06 08:03 de d52fr