FUSION DE TABLES  



Sommaire



E1) Réunion de tables et enregistrement du résultat
E2) Jointure de tables




E1) Réunion de tables et enregistrement du résultat

La fusion de tables sous la forme de réunion sera finalisée ici par un export d'un vrai ficher csv en sortie



1. Créer un fichier notes2.csv avec les données de la table2.

Dans l'éditeur Python créer un fichier et enregistrez-le en le nommant :  traitementE1.py

Programme à compléter

import csv

fichier=open("notes.csv", encoding='utf8')
table1=list(csv.DictReader(fichier,delimiter=";"))
fichier.close()

#

# A compléter pour table2 et notes2.csv

#


# Fusion

# table3= ...


#EXPORT en fichier CSV  , attribut "w" pour write / écrire
with open("notes3.csv","w") as sortie:
    objet=csv.DictWriter(sortie,['Nom','Maths','NSI','Anglais','Option'],delimiter=";")
    # Pour écrire la ligne d'en têtes
    objet.writeheader()
    # Pour écrire la table
    objet.writerows(table3)


Dans le fichier python :
2. Importer les données des deux tables notes.csv et notes2.csv dans les variables table1 et table2.
3. Fusionner les deux dans une table3 par l’opération : table3 = table1 + table2.
4. Exporter les données de la table3 dans un nouveau fichier CSV : notes3.csv
5. Vérifier la présence de notes3.csv ainsi que le résultat obtenu. Faire une capture pour le compte rendu




E2) Jointure de tables

La jointure de tables est une opération intéressante qui permet d'automatiser une fusion de plusieurs tables 

ayant des attributs différents mais avec au moins un attribut commun


On va réunir la table 1 (notes.csv) et la table 4 (à créer) pour former la table 5

1. Créer un fichier notes4.csv avec les données de la table4.

Dans l'éditeur Python, créer un fichier et enregistrez-le en le nommant :  traitementE2.py
2. Importer les données de notes.csv et notes4.csv dans les variables table1 et table4.

def fusion(ligneA,ligneB):
    '''In : ligneA la table 1 et ligneB de la table 4
    Out : le dictionnaire de la fusion'''
    return {"Nom":ligneA["Nom"],"Prénom":ligneB["Prénom"],
"Année":ligneB["Année"],"e-mail":ligneB["e-mail"],
"Maths":ligneA["Maths"],"NSI":ligneA["NSI"],
"Anglais":ligneA["Anglais"]}


3. Avec le modèle ci-dessus, créer une fonction ( vide pour l'instant)  appelée fusionT(tableA,tableB) qui créera un nouveau dictionnaire représentant la ligne de la table fusionnée recherchée.  

4.  Ajoutez à la fonction fusionT(tableA,tableB) la jointure  ci-dessous:
— jointure1 : par une double boucles ;

jointure1=[]
for ligneA in table1:
    for ligneB in table4:
        if ligneA["Nom"]==ligneB["Nom"]:
            jointure1.append(fusion(ligneA,ligneB))


remplacez dans la fonction fusionT(tableA,tableB)  la jointure par celle ci-dessous:


— jointure2 : par une double compréhension qui s’apparente en fait plus au fonctionnement des requêtes SQL qui seront abordées en terminale.


jointure2=[fusion(ligneA,ligneB) for ligneA in table1 for ligneB in table4 if ligneA["Nom"]==ligneB["Nom"]]


5. En vous aidant du modèle d'export précédent en E1) , exporter les données de la jointure dans un nouveau fichier CSV : jointureE2.csv


Créé avec HelpNDoc Personal Edition: Générateur de documentation iPhone gratuit