Skip to content

Commit 0713aba

Browse files
committed
micro tweaks in covid
1 parent 8e31074 commit 0713aba

File tree

2 files changed

+44
-59
lines changed

2 files changed

+44
-59
lines changed

notebooks/pandas-tps/covid/.teacher/README-covid-corrige-nb.md

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ kernelspec:
1010
name: python3
1111
language_info:
1212
name: python
13-
nbconvert_exporter: python
1413
pygments_lexer: ipython3
14+
nbconvert_exporter: python
1515
nbhosting:
1616
title: "TP sur les donn\xE9es coronavirus"
1717
---
@@ -192,14 +192,17 @@ le fichier <https://pomber.github.io/covid19/timeseries.json> contient un objet
192192
### avec `pd.read_json`
193193

194194
````{admonition}
195-
on ne va pas faire comme ça ici, mais sachez que c'est la méthode la plus rapide (à écrire):
195+
la méthode qui semble la plus rapide (à écrire) consiste à faire simplement:
196196
197197
```python
198198
data = pd.read_json(json_url)
199199
```
200200
201-
par contre ça peut être franchement long, surtout si votre **connexion réseau** n'est pas au top
202-
c'est pourquoi on va voir aussi une autre méthode - que vous pouvez sauter si vous êtes pressés de voir le traitement des données *per se*
201+
par contre, ça ne plante pas, mais ça crée une dataframe franchement gloubi-goulba !
202+
en plus ça peut être franchement long, surtout si votre **connexion réseau** n'est pas au top
203+
c'est pourquoi:
204+
- on va pour commencer voir une technique - que vous pouvez sauter si vous êtes pressés de voir le traitement des données *per se* - pour "cacher" le fichier localement sur notre disque dur
205+
- et ensuite on va vous inviter à écrire votre propre code pour mettre ces données sous une forme plus propice à notre objectif
203206
````
204207

205208
+++ {"tags": ["framed_cell"]}
@@ -344,7 +347,6 @@ by_country
344347
````
345348

346349
```{code-cell} ipython3
347-
348350
# le code
349351
350352
if by_country is not None:
@@ -621,19 +623,14 @@ global_df.loc[0]
621623
ce qui s'est passé c'est que :
622624
chacune de nos dataframe par pays a été construite à partir d'un index **séquentiel**
623625
i.e. un `RangeIndex` qui commence à chaque fois à 0
624-
et lors du `concat` on a conservé ces valeurs
625-
ce qui crée une multitude de lignes indexées par 0 (un par pays)
626-
627-
c'est un trait de `pandas`
628-
contrairement aux dictionnaires Python - où une clé est forcément unique
629-
il est possible de **dupliquer plusieurs entrées dans les index**
630-
ligne ou colonne - d'une dataframe
631-
632-
même si ça n'est en général pas souhaitable
633-
c'est souvent commode de pouvoir le faire
634-
pendant la phase de construction / mise au point de la dataframe
635-
quitte à adopter par la suite un index plus approprié
636-
(comme on va le faire bientôt)
626+
et lors du `concat` on a conservé ces valeurs, ce qui crée une multitude de lignes indexées par 0 (un par pays)
627+
628+
c'est un trait de `pandas`: contrairement aux dictionnaires Python - où une clé est forcément unique
629+
il est possible de **dupliquer plusieurs entrées dans les index** ligne ou colonne - d'une dataframe
630+
631+
même si ça n'est en général **pas souhaitable**, c'est souvent **commode** de pouvoir le faire
632+
pendant la phase de construction / mise au point de la dataframe - (comme c'est le cas maintenant)
633+
quitte à adopter **par la suite un index plus approprié** (comme on va le faire bientôt)
637634
````
638635

639636
+++
@@ -826,7 +823,8 @@ global_df.dtypes
826823

827824
````{admonition} exo
828825
1. nous avons vu la notion de *MultiIndex*
829-
quel serait d'aprés vous un bon choix pour indexer la dataframe globale ?
826+
quel serait d'aprés vous un bon choix pour indexer la dataframe globale ?
827+
(réponse attendue sous forme simplement textuelle à ce stade, on va écrire le code dans la question suivante)
830828
````
831829

832830
```{code-cell} ipython3
@@ -847,11 +845,8 @@ global_df.dtypes
847845
+++ {"tags": ["framed_cell"]}
848846

849847
````{admonition} exo
850-
2. voyez-vous un moyen d'utiliser `pivot_table()` pour construire une nouvelle
851-
dataframe qui contienne essentiellement les mêmes informations
852-
mais avec un multi-index qui soit pertinent dans le contexte
853-
**variante** on peut aussi utiliser `set_index()`
854-
pour aboutir au même résultat
848+
2. voyez-vous un moyen d'utiliser `pivot_table()` pour construire une dataframe qui contienne les mêmes informations, mais avec le multi-index qu'on a décidé à la question précédente ?
849+
**variante** on peut aussi utiliser `set_index()` pour aboutir au même résultat
855850
856851
rangez votre résultat dans une variable `clean_df`
857852
````
@@ -888,7 +883,7 @@ clean_df
888883

889884
+++ {"tags": ["framed_cell"]}
890885

891-
### accéder via un *MultiIndex*
886+
## accéder via un *MultiIndex*
892887

893888
````{admonition} exo
894889
1. extrayez de la dataframe la série des 3 mesures
@@ -942,14 +937,12 @@ clean_df.loc[['France', 'Italy']]
942937

943938
````{admonition}
944939
pour illustrer la puissance de pandas, et la pertinence de notre choix d'index
945-
voyons comment utiliser du **slicing** (*très très avancé*)
946-
pour extraire cette fois les données relatives à
940+
voyons comment utiliser du **slicing** (*assez avancé*) pour extraire cette fois les données relatives à
947941
948942
* deux pays au hasard - disons `France` et `Italy`
949943
* à la période 1er Juillet - 15 Août 2021 inclus
950944
951-
pour ça on va tirer profit de la structure de l'index
952-
et aussi de la puissance du type `datetime64`
945+
pour ça on va tirer profit de la structure de l'index, et aussi de la puissance du type `datetime64`
953946
954947
on va fabriquer :
955948
@@ -958,8 +951,7 @@ on va fabriquer :
958951
qui en temps normal pourrait s'écrire `'july 2021' : '15 august 2021'`
959952
(bornes inclusives puisque `.loc[]`)
960953
961-
* un slice sur les colonnes
962-
mais au fait on les veut toutes, on peut utiliser `:`
954+
* un slice sur les colonnes; mais au fait on les veut toutes, on peut utiliser `:`
963955
964956
l'idée serait ensuite d'écrire simplement
965957

notebooks/pandas-tps/covid/README-covid-nb.md

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ kernelspec:
1010
name: python3
1111
language_info:
1212
name: python
13-
nbconvert_exporter: python
1413
pygments_lexer: ipython3
14+
nbconvert_exporter: python
1515
nbhosting:
1616
title: "TP sur les donn\xE9es coronavirus"
1717
---
@@ -192,14 +192,17 @@ le fichier <https://pomber.github.io/covid19/timeseries.json> contient un objet
192192
### avec `pd.read_json`
193193

194194
````{admonition}
195-
on ne va pas faire comme ça ici, mais sachez que c'est la méthode la plus rapide (à écrire):
195+
la méthode qui semble la plus rapide (à écrire) consiste à faire simplement:
196196
197197
```python
198198
data = pd.read_json(json_url)
199199
```
200200
201-
par contre ça peut être franchement long, surtout si votre **connexion réseau** n'est pas au top
202-
c'est pourquoi on va voir aussi une autre méthode - que vous pouvez sauter si vous êtes pressés de voir le traitement des données *per se*
201+
par contre, ça ne plante pas, mais ça crée une dataframe franchement gloubi-goulba !
202+
en plus ça peut être franchement long, surtout si votre **connexion réseau** n'est pas au top
203+
c'est pourquoi:
204+
- on va pour commencer voir une technique - que vous pouvez sauter si vous êtes pressés de voir le traitement des données *per se* - pour "cacher" le fichier localement sur notre disque dur
205+
- et ensuite on va vous inviter à écrire votre propre code pour mettre ces données sous une forme plus propice à notre objectif
203206
````
204207

205208
+++ {"tags": ["framed_cell"]}
@@ -522,19 +525,14 @@ global_df.loc[0]
522525
ce qui s'est passé c'est que :
523526
chacune de nos dataframe par pays a été construite à partir d'un index **séquentiel**
524527
i.e. un `RangeIndex` qui commence à chaque fois à 0
525-
et lors du `concat` on a conservé ces valeurs
526-
ce qui crée une multitude de lignes indexées par 0 (un par pays)
528+
et lors du `concat` on a conservé ces valeurs, ce qui crée une multitude de lignes indexées par 0 (un par pays)
527529
528-
c'est un trait de `pandas`
529-
contrairement aux dictionnaires Python - où une clé est forcément unique
530-
il est possible de **dupliquer plusieurs entrées dans les index**
531-
ligne ou colonne - d'une dataframe
530+
c'est un trait de `pandas`: contrairement aux dictionnaires Python - où une clé est forcément unique
531+
il est possible de **dupliquer plusieurs entrées dans les index** ligne ou colonne - d'une dataframe
532532
533-
même si ça n'est en général pas souhaitable
534-
c'est souvent commode de pouvoir le faire
535-
pendant la phase de construction / mise au point de la dataframe
536-
quitte à adopter par la suite un index plus approprié
537-
(comme on va le faire bientôt)
533+
même si ça n'est en général **pas souhaitable**, c'est souvent **commode** de pouvoir le faire
534+
pendant la phase de construction / mise au point de la dataframe - (comme c'est le cas maintenant)
535+
quitte à adopter **par la suite un index plus approprié** (comme on va le faire bientôt)
538536
````
539537

540538
+++
@@ -691,7 +689,8 @@ reprenons à partir de la dataframe globale
691689

692690
````{admonition} exo
693691
1. nous avons vu la notion de *MultiIndex*
694-
quel serait d'aprés vous un bon choix pour indexer la dataframe globale ?
692+
quel serait d'aprés vous un bon choix pour indexer la dataframe globale ?
693+
(réponse attendue sous forme simplement textuelle à ce stade, on va écrire le code dans la question suivante)
695694
````
696695

697696
```{code-cell} ipython3
@@ -701,11 +700,8 @@ reprenons à partir de la dataframe globale
701700
+++ {"tags": ["framed_cell"]}
702701

703702
````{admonition} exo
704-
2. voyez-vous un moyen d'utiliser `pivot_table()` pour construire une nouvelle
705-
dataframe qui contienne essentiellement les mêmes informations
706-
mais avec un multi-index qui soit pertinent dans le contexte
707-
**variante** on peut aussi utiliser `set_index()`
708-
pour aboutir au même résultat
703+
2. voyez-vous un moyen d'utiliser `pivot_table()` pour construire une dataframe qui contienne les mêmes informations, mais avec le multi-index qu'on a décidé à la question précédente ?
704+
**variante** on peut aussi utiliser `set_index()` pour aboutir au même résultat
709705
710706
rangez votre résultat dans une variable `clean_df`
711707
````
@@ -716,7 +712,7 @@ rangez votre résultat dans une variable `clean_df`
716712

717713
+++ {"tags": ["framed_cell"]}
718714

719-
### accéder via un *MultiIndex*
715+
## accéder via un *MultiIndex*
720716

721717
````{admonition} exo
722718
1. extrayez de la dataframe la série des 3 mesures
@@ -755,14 +751,12 @@ rangez votre résultat dans une variable `clean_df`
755751

756752
````{admonition}
757753
pour illustrer la puissance de pandas, et la pertinence de notre choix d'index
758-
voyons comment utiliser du **slicing** (*très très avancé*)
759-
pour extraire cette fois les données relatives à
754+
voyons comment utiliser du **slicing** (*assez avancé*) pour extraire cette fois les données relatives à
760755
761756
* deux pays au hasard - disons `France` et `Italy`
762757
* à la période 1er Juillet - 15 Août 2021 inclus
763758
764-
pour ça on va tirer profit de la structure de l'index
765-
et aussi de la puissance du type `datetime64`
759+
pour ça on va tirer profit de la structure de l'index, et aussi de la puissance du type `datetime64`
766760
767761
on va fabriquer :
768762
@@ -771,8 +765,7 @@ on va fabriquer :
771765
qui en temps normal pourrait s'écrire `'july 2021' : '15 august 2021'`
772766
(bornes inclusives puisque `.loc[]`)
773767
774-
* un slice sur les colonnes
775-
mais au fait on les veut toutes, on peut utiliser `:`
768+
* un slice sur les colonnes; mais au fait on les veut toutes, on peut utiliser `:`
776769
777770
l'idée serait ensuite d'écrire simplement
778771

0 commit comments

Comments
 (0)