Fusions de tables

Traitement des données en table

Plan

Principe

Il est assez fréquent que des tables contiennent des noms de champs identiques. La fusion de table a pour objectif de créer une seule table à partir de deux. On appelle cela jointer des tables. Il existe plusieurs types de jointures. La jointure exclusive qui ne prend que les élèments dont le champ commun est dans les deux tables. Nous avons ensuite la jointure à gauche qui prend tous les élèments du premier fichier et uniquement ceux qui peuvent y être rattachés du 2nd fichier. Idem pour la jointure à droite. Si des noms de champs portent sur le même renseignement mais que ces noms sont différents, on peut préciser les noms de ces champs de jointure.

Méthode

Pour faire la fusion de tables nous allons encore utiliser la bibliothèque pandas et son instruction merge. Bien entendu cela ferait aussi un excellent exercice sur les listes de le coder par nous même.

import pandas
result = pandas.read_csv('ClasseurMetalPointVirgule.csv',sep=';', encoding='latin-1')
result2 = pandas.read_csv('ClasseurAlbumPourMerge.csv',sep=';', encoding='latin-1')
merge=pandas.merge(result, result2)
#merge trouve tout seul la colonne ayant le même nom de champs
#et ne fusionne que les lignes dont le champs commun est présent dans les 2 tables
#voici si les noms de champs sont différents (ce qui n'est pas le cas ici)
merge=pandas.merge(result, result2,left_on='Album', right_on='Album')
#et si l'on veut les lignes des deux fichiers même si pas le champs en commun
# on aura alors NaN pour les champs qui n'existaient pas
merge=pandas.merge(result, result2,on='Album', how="outer")
#jointure exclusive encore ;
merge=pandas.merge(result, result2,on='Album', how="inner")
#prendre tout le fichier de droite, ici result2, et en plus tout ce qui est commun
merge=pandas.merge(result, result2,on='Album', how="right")
merge=pandas.merge(result, result2,on='Album', how="left")

Bien entendu on peut récupérer ce fichier fusion et en faire un nouveau fichier csv en utilisant to_csv de pandas.


merge.to_csv("merge.csv",sep=';',encoding='utf-8', index=False)

Exercices

 

  1. Vous trouverez ci-dessous deux fichiers texte, à enregistrer au format txt (avec un copier coller) sous le nom de fichier1.txt et fichier2.txt sans les modifier.

    L'objectif est de fusionner ces deux tables, uniquement si les noms et prenoms sont identiques, dans un seul fichier fusion.csv sans utiliser la bibliothèque pandas!

    Vous devez utiliser fichier1 et fichier2 directement dans python (avec l'extension txt). Inutile de passer votre fichier dans excel pour le vérifier. Un fichier csv, n'est rien d'autre qu'un fichier txt avec des séparateurs et un indicateur de fin de ligne.

    Voici le fichier1.txt

    
    nom,prenom,age,musique
    Archi,Jacques,28,classique
    Legend,Paul,15,Jazz
    Urien,Antoine,16,Metal
    Zep,Bybi,40,Pop
    Perpro,Joan,22,Funk
    

    Voici le fichier2.txt

    
    nom;prenom;support
    Perpro;Joan;streaming
    Prunch;Toto;CD
    Archi;Jacques;CD
    Legend;Laurent;mp3
    Urien;Antoine;streaming
    Pez;Bybi;radio
    Last;Lost;streaming
    
    
    

    Voici ce que doit donner l'ouverture dans le tableur

    
    	nom	prenom	age	musique	support
    	Archi	Jacques	28	classique	CD
    	Urien	Antoine	16	Metal	streaming
    	Perpro	Joan	22	Funk	streaming
    
    

  2. Faites la fusion des fichiers csv précédents avec pandas!

Android

De la programmation pour pc à la programmation pour téléphone.

A finir

Pas eu le temps de tout faire.....