Traitement des données en table
La récupération et le traitement des données est un enjeu fondamental en informatique et comprendre les principes de la gestion des données est très important.
Il existe plusieurs façon de les stocker, vous verrez l'année prochaine le sql lié à cette problématique de données dynamique.
Pour stocker une donnée, l'important est l'indexation : inutile pour une entreprise de stocker une liste de valeurs si elle ne sait pas à quoi elles correspondent. Le système le plus simple est de tout stocker dans un simple fichier texte en séparant les données par une ponctuation : c'est le principe du format csv (pour Comma separated values)
I- Le fichier CSV⚓︎
1) Présentation⚓︎
Cliquer pour refermer
Les données publiques sont une avancée récente. Il est possible en accédant au site data.gouv.fr d'accéder à différentes données publiques.
- Saisir dans la barre de recherche "Opérations coordonnées par les CROSS" : vous aurez accès au récapitulatif de toutes les interventions effectuées par les centres opérationnels de surveillance et de sauvetage du littoral français.
- Télécharger le fichier operations.csv
Si vous essayez de l'ouvrir, il est probable qu'un tableur s'ouvre, que ce soit Microsoft Excel ou LibreOffice Calc.
Avec LibreOffice Clac, vous obtiendrez cette fenêtre :
En faisant attention à définir la bonne norme d'encodage et le séparateur correct, vous obtiendrez ce tableau :
Il est cependant possible d'ouvrir ce fichier avec un simple éditeur de texte, comme Notepad++.
On obtient alors un fichier texte "classique" :
On observe cependant que la première ligne est différente des suivantes.
Note
Un fichier CSV est un fichier texte dans lequel la première ligne contient les descripteurs permettant de savoir à quoi correspondent les valeurs associées à chaque item.
Il est donc nécessaire lors de l'élaboration d'un fichier csv de veiller à ce que les valeurs soient correctement ordonnées.
2) Traitement⚓︎
L'équivalent en python d'un fichier CSV serait une liste de dictionnaires où:
- Chaque élément de la liste correspond à une ligne du fichier csv
- Chaque élément est un dictionnaire ayant pour clés les descripteurs du fichier csv
Il est possible de traiter un fichier CSV afin de le traduire sous la forme ci-dessus :
- Ouvrir le fichier CSV comme un fichier texte
- Extraire chaque ligne et les stocker dans une liste
- Découper chaque ligne à l'aide de la méthode split(",") puisque les données sont séparées par des virgules
- Créer une nouvelle liste, contenant à chaque entrée un dictionnaire dont chaque clé correspondra à chaque descripteur présent dans la première ligne du fichier CSV et chaque valeur correspondra à la valeur indiquée pour la ligne traitée dans le fichier CSV.
Cela donne le code suivant :
def recuperation(chemin_fichier):
with open(chemin_fichier,"r",encoding="utf-8") as fichier:
sortie = fichier.readlines()
return sortie
def reconstruction(liste):
base=[]
descripteurs=liste[0][:-1].split(",")
for ligne in liste[1:]:
entree={}
valeurs=ligne[:-1].split(",")
for v in range(len(valeurs)):
entree[descripteurs[v]]=valeurs[v]
base.append(entree)
return base
#récupération d'un fochier csv et réécriture sous la forme d'une liste de dictionnaires
document=reconstruction(recuperation("operations.csv"))
Question
Saurez-vous me dire pourquoi j'utilise liste[0][:-1].split(",") à la place de liste[0].split(",") ?
Explication du code :
Dans le code ci-dessus : - La fonction recuperation(chemin) va ouvrir le fichier en mode texte et copier chacune de ses lignes dans une liste - La fonction reconstruction(liste) va créer une liste de dictionnaires en prenant en clés les éléments de la première ligne - Lors de l'exécution de ce script, le fichier CSV est finalement stocké dans la variable document.
Exercice
On suppose que le script précédent a été exécuté sur le fichier operations.csv, qui se trouve donc maintenant dans la variable document.
- Indiquer la commande à réaliser pour obtenir les informations concernant la première opération du fichier CSV
- Indiquer la commande à saisir pour obtenir les informations concernant la dernière opération du fichier CSV
- Indiquer la commande à saisir pour obtenir la date de l'heure de réception de l'alerte pour l'opération située au rang i.
Pour aller plus loin :
- Ecrire une fonction recherche(cle,valeur) retournant une liste contenant les informations de toutes les opérations ayant la valeur valeur pour la clé cle
- Ecrire une fonction recherche_max(cle) retournant les informations de l'opération ayant la plus grande valeur pour la clé cle du fichier
3- Le module pandas⚓︎
Le module pandas permet de traiter simplement un fichier CSV. On arrive ainsi à l'équivalent du scrit précédent par le script suivant :
import pandas
def recuperation2(chemin_fichier):
base=pandas.read_csv(chemin_fichier)
return base
Remarque :
chemin_fichier est le chemin d'accès au fichier CSV, qui peut par exemple être fourni par la fonction fichier("ouvrir") du script précédent.
Manipuler des fichiers CSV avec le module pandas
David Roche propose à travers son site Informatique au lycée un très bon tutoriel concernant la manipulation de fichiers CSV avec le mmodule pandas.
Cliquez ici pour accéder aux exercices !