logo

Traitement des données en table avec le module CSV

Importer les tables

Premier fichier clients.csv

Vous pouvez télécharger le fichier clients.csv.

Voici un code en python, qui à partir du fichier clients.csv obtient un tableau tab1 doublement indexé contenant les données du fichier.

import csv

tab1 = []
with open('clients.csv', newline='',encoding='utf-8') as fichier1:
    contenu = csv.reader(fichier1, delimiter=',')
    for ligne in contenu:
        tab1.append(ligne)
print(tab1)

Analyser ce code.

Avec le module csv, on peut créer des tableaux sous forme d'une liste de dictionnaires.

import csv

tabdict1 = []
with open('clients.csv', newline='',encoding='utf-8') as fichier1:
    contenu = csv.DictReader(fichier1, delimiter=',')
    for ligne in contenu:
        tabdict1.append(ligne)
print(tabdict1)

Deuxième fichier commandes.csv

Vous pouvez télécharger le fichier commandes.csv.

Télécharger ce fichier et écrire le code pour obtenir le tableau tabdict2 contenant ses données sous forme d'une liste de dictionnaires.

Recherche dans les tables

Voici le code d'une fonction de recherche qui permet de trouver les éléments ayant le descripteur recherché.

def recherche(rech,descripteur):
    liste_recherche=[]
    for e in tabdict1:
        if rech==e[descripteur]:
            liste_recherche.append(e)
    return liste_recherche
print(recherche("Jean","nom"))

Ecrire une fonction analogue en utilisant une liste par compréhension.

Voir une solution

Ecrire une fonction de recherche dont le paramètre est l'âge et qui renvoit tous ceux qui ont un âge supérieur ou égal

Voir une solution

Trier les tables

Il faut indiquer selon quels critères on veut effectuer ce tri. Pour cela, on appelle la fonction sorted ou la méthode sort avec l’argument supplémentaire key qui est une fonction renvoyant la valeur utilisée pour le tri. La méthode sort trie la liste en place et la remplace, alors que la fonction sorted renvoie une nouvelle liste correspondant la liste trié, la liste initiale étant conservée.

Trier en fonction d'un descripteur

Voici le code pour trier suivant le descripteur nom

def cle1(tabdict1):
    return tabdict1["nom"]
tabdict1.sort(key=cle1)
print(tabdict1)

Analyser ce code.

Trier en fonction d'un descripteur numérique

Voici le code pour trier suivant le descripteur id

def cle_num(tabdict1):
    return int(tabdict1["id"])
tabdict1.sort(key=cle_num)
print(tabdict1)

Analyser ce code.

Trier en fonction de deux descripteurs

On va trier selon le nom puis en cas d'ex-aequo suivant l'age.

Voici le code :

def cle2(tabdict1):
    return tabdict1["nom"],int(tabdict1["age"])
tab=sorted(tabdict1,key=cle2)
print(tab)

Analyser ce code.

Fusion des 2 fichiers

On veut fusionner les deux fichiers en faisant coïncider leur id.
Voici le code :

t_fusion=tabdict1[:]
for i in range(len(tabdict1)):
    for c in [ com for com in tabdict2 if com["id"]==tabdict1[i]["id"] ]:
        t_fusion[i]["date"]=c["date"]
        t_fusion[i]["commande"]=c["commande"]
print(t_fusion)