Cours NSI-SNT

Traitement des données en python

Rappel de l’importation de document CSV en liste de dictionnaire

import csv
listeFilms = []
with open('films.csv', 'r', encoding='utf-8') as objFichier:
    objDatasCsv = csv.DictReader(objFichier, delimiter=';')
    for ligne in objDatasCsv:
        listeFilms.append(dict(ligne))

Fusion de données : Jointure de table

Jointure de deux tables selon un champ

La jointure de DEUX tables selon un champ revient à fusionner ces tables à partir d’un attribut commun pour former UNE seule table contenant les enregistrements des valeurs correspondant au champ de deux tables.

Exemple

    id,nom,classe
    1,Martin,1A
    2,Dupont,1A
    3,Bernard,1B
    4,Durand,1B
    
    id,NSI,Math
    1,15,13
    2,12,17
    4,18,9
    5,10,11
    

Activité I : Fusion à la main 🖋️

Voire le document imprimé. ( en .odt ou .pdf )

Consigne :

3,douze,treize

Activité II : Fusion sur python 🐍

A partir d’ eleve.csv et note.csv, réaliser une fonction python pour fusionner ces 2 tables en une.

1er étape: Afficher tous les enregistrements des élèves, puis des notes. Vous pouvez écrire une fonction pour vous aider.

Exemple

>>> print(eleve)
[
    [1,"Martin","1A"],
    [2,"Dupont","1A"],
    ...
]

2eme étape: Ecrire une fonction projection(table, champ) qui effectue l’affichage complet d’une table à partir d’un attribut, tout deux donnés en paramètre.

Exemple

>>> projection(eleve,"id")
[
    [1],
    [2],
    ...
]

3eme étape: Ecrire une fonction fusionne(table1, table2, champ) qui affiche la fusion des 2 tables selon le champ donné en paramètre

Exemple

>>> fusionne(eleve,note,"id")
[
    [1,"Martin","1A",15,13],
    [2,"Dupont","1A",12,17],
    ...
]

ATTENTION ! Si le champ ne fait pas partie des 2 tables, une erreur doit être envoyée (assert) !

4eme étape: Pour les plus rapides, créer un dossier eleve_note.csv, et modifier le avec Python pour ajouter la fusion des 2 tables obtenu précédemment.

Un indice ? 🤔

Vous pouvez réutiliser la fonction with open en changeant le paramètre 'r' en 'w' pour écrire dans le document (write).

Exemple :


    with open("mon_fichier.txt", "w") as fichier:
        fichier.write("Bonjour tout le monde !")