... | ... | @@ -5,22 +5,50 @@ Cet objectif ne semble pas hyper ambitieux, et vous trouverez des tutos pour ré |
|
|
On vous a mis plusieurs versions du fichier, qui était initialement un fichier tableur.
|
|
|
On va choisir celui qui est le mieux conditionné pour utiliser cette fois la méthode read_csv de pandas qui va tout lire et bien ranger, y compris les titres de colonne.
|
|
|
|
|
|
Dans le code, on propose (en commentaire) plusieurs manières de décoder les dates.
|
|
|
Si vous voulez le faire "à la main", vous trouverez en commentaire plusieurs manières de décoder les dates, à partir de la ligne lue, toujours en format "string".
|
|
|
|
|
|
```python
|
|
|
ligne_dateTPQ = "01/04/2000;9,3;49;8,6"
|
|
|
```
|
|
|
ensuite... vous "splittez" et vous décodez la date avec différentes méthodes.
|
|
|
En particulier, il y a des exercices sur les tuples (notions que l'on reverra plus loin)
|
|
|
Comme dans la partie A, le découpage se fait avec l'instruction "split". La date est le premier de ces éléments, qui est comme les autres une chaîne de caractères (string), à convertir en date. Le plus simple est de "re-splitter" avec comme argument le séparateur "/".
|
|
|
On peut en profiter pour s'exercer sur les **tuples** (notions que l'on reverra plus loin)
|
|
|
|
|
|
```python
|
|
|
|
|
|
jma = "01/04/2000".split('/') # jma est donc une liste de string ['01', '04', '2000']
|
|
|
j, m, a = jma # unpacking : j= '01', m='04', a = '2000'
|
|
|
jma = "01/04/2000".split('/') # jma est donc une liste de strings ['01', '04', '2000']
|
|
|
j, m, a = jma # unpacking : en une seule opération on affecte j= '01', m='04', a = '2000'
|
|
|
# on pourrait même écrire directement
|
|
|
j, m, a = "01/04/2000".split('/')
|
|
|
# et ensuite on crée un objet au format datetime
|
|
|
date = datetime(int(a), int(m), int(j))
|
|
|
```
|
|
|
|
|
|
### C2) on demande à Pandas de faire tout le boulot : lire le fichier et faire un graphique
|
|
|
Dans un premier temps, on va profiter de la bibliothèque pandas, qui crée et travaille sur des **DataFrames**.
|
|
|
``` python
|
|
|
import pandas as pd
|
|
|
```
|
|
|
On vous a donné du code déjà écrit, donnees_TD_ETP_csv_panda_seul ; vous pouvez sans doute l'améliorer.
|
|
|
On va s'appuyer sur la méthode read_csv pour lire le fichier et le mettre sous forme de tableau (DataFrame).
|
|
|
Il devrait être possible de tout récupérer au format voulu en une seule opération, mais ici on a dû écrire quelques étapes.
|
|
|
On utilise des instructions comme "print" pour vérifier que l'on a bien lu correctement, et header pour jeter un oeil aux premières lignes du DF.
|
|
|
Dans un deuxième temps, on va convertir la première colonne (donc d'indice 0) de texte en date, et avec pd.to_datetime ; l'argument day_first permet de lever une ambiguité : le jour ou le mois est écrit en premier
|
|
|
|
|
|
Cette colonne doit devenir l'index de la table.
|
|
|
On a donc au final un DF avec un index date et 3 colonnes T, P et Q.
|
|
|
Le module pandas permet de tracer en une opération les données : mon_data_frame.plot().
|
|
|
|
|
|
``` python
|
|
|
DF_TD4.plot()
|
|
|
plt.suptitle("En utilisant les possibilités de pandas")
|
|
|
plt.legend()
|
|
|
plt.show()
|
|
|
```
|
|
|
|
|
|
La bonne nouvelle : l'outil zoom montre que l'affichage des étiquettes de date est correct quel que soit le niveau de zoom, contrairement à la première expérience.
|
|
|
On utilisera dans la suite des instructions qui donnent ce rendu même en dehors de Pandas.
|
|
|
La mauvaise nouvelle : les trois variables, qui s'expriment dans des unités différentes, sont toutes les 3 tracées dans le même repère. Cela permet de voir les données rapidement, mais évidemment la mise en forme n'est pas du tout satisfaisante pour un rapport. On va donc retravailler cela dans la suite.
|
|
|
|
|
|
### C2) un deuxième axe. Un deuxième quoi ?
|
|
|
On vous a donné du code déjà écrit, comme ce que vous pourriez trouver en ligne.
|
|
|
Ca marche, même si c'est plutôt moche, donc n'hésitez pas à mettre en forme pour vous exercer.
|
... | ... | |