traitement de données en tables

Objectifs :

À la fin de cette séquence vous serez capable de :

  • Rechercher les lignes d’une table vérifiant des critères exprimés en logique propositionnelle.
  • Trier une table suivant une colonne.
  • Construire une nouvelle table en combinant les données de deux tables.
In [1]:
import csv

Créer, sur votre bureau, le fichier table_triplettes.csv avec les données suivantes :

idEleve;nom;prénom;annéeNaissance;spécialité1;spécialité2;spécialité3
1;Dupond;Émile;2004;Mathématiques;Humanités,littérature et philosophie;Physique-chimie
2;Konate;Mohamed;2004;Mathématiques;Sciences de l'ingénieur;Numérique et sciences informatiques
3;Dupont;Chloé;2005;Humanités,littérature et philosophie;Mathématiques;Sciences de l'ingénieur
4;Dupons;Camille;2002;Physique-chimie;Humanités,littérature et philosophie;Mathématiques
5;Eyoum;Francine;2003;Humanités,littérature et philosophie;Mathématiques;Sciences de l'ingénieurr
6;Djérouni;Myriam;2004;Mathématiques;Humanités,littérature et philosophie;Physique-chimie
3;Dupont;Chloé;2005;Humanités,littérature et philosophie;Mathématiques;Sciences de l'ingénieur
4;Dupons;Camille;2002;Physique-chimie;Humanités,littérature et philosophie;Mathématiquese

In [1]:
#Hors programme !
with open(r"C:\Users\tchou\OneDrive\Desktop\specialites.csv", "w", encoding="utf8") as fichier_csv:
    fichier_csv.write("idEleve;nom;prénom;annéeNaissance;spécialité1;spécialité2;spécialité3;option\n")
    fichier_csv.write("1;Dupond;Émile;2004;Mathématiques;Humanités,littérature et philosophie;Physique-chimie;musique\n")
    fichier_csv.write("2;Konate;Mohamed;2004;Mathématiques;Sciences de l'ingénieur;Numérique et sciences informatiques;italien\n")
    fichier_csv.write("3;Dupont;Chloé;2005;Humanités,littérature et philosophie;Mathématiques;Sciences de l'ingénieur;NULL\n")
    fichier_csv.write("4;Dupons;Camille;2002;Physique-chimie;Humanités,littérature et philosophie;Mathématiques;123\n")
    fichier_csv.write("5;Eyoum;Francine;2003;Humanités,littérature et philosophie;Mathématiques;Sciences de l'ingénieur;arts plastiques\n")
    fichier_csv.write("6;Djérouni;Myriam;2004;Mathématiques;Humanités,littérature et philosophie;Physique-chimie;sport\n")
    fichier_csv.write("13;Bennett;Tony;2000;Ses;Humanités,littérature et philosophie;nsi;musique\n")
    fichier_csv.write("3;Dupont;Chloé;2005;Humanités,littérature et philosophie;Mathématiques;Sciences de l'ingénieur;NULL\n")
    fichier_csv.write("20;Mohamed;Nicole;2007;Hggs;nsi;Svt;sport\n")
    fichier_csv.write("4;Dupons5;Camille;2002;Physique-chimie;Humanités,littérature et philosophie;Mathématiques;italien\n")

1. Recherche dans une table

Pour commencer, créer à partir du fichier précédent une liste dict_triplettes de dictionnaires élève avec leur triplette.

1.1. Rechercher les élèves ayant choisi mathématiques en spécialité1.

In [ ]:
 

1.2. Déterminer le nombre d'élèves ayant choisi Mathématiques en spécialité 1 et(ou) physique-chimie en spécialité3

In [ ]:
 

1.3. Rechercher des doublons dans une table

  1. Créer une liste occurrences_multiples contenant les dictionnaires élève apparaissant plus d'une fois dans table_triplettes.
  2. Créer une liste occurrences_uniques contenant les dictionnaires élèves apparaissant une et une seule fois dans table_triplettes.
  3. Créer une liste dict_triplettes_sans_doublon contenant les dictionnaires élèves sans les doublons.
In [ ]:
 
In [ ]:
 
In [ ]:
 

2. Tests de cohérence.

Vérifier, dans dict_triplettes_sans_doublon, que les valeurs du descripteur nom sont du même type

L'objectif est de corriger une erreur de saisie, par exemple.

In [ ]:
 

3. Trier une table suivant une colonne

Avant de commencer, demander de l'aide sur l'utilisation de la fonction sorted.

3.1. Trier la table dict_triplettes_sans_doublon par ordre décroissant de l'année de naissance avec la fonction sorted.

In [ ]:
 
In [ ]:
 

3.2. Trier la table dict_triplettes_sans_doublon par ordre alphabétique des noms.

In [ ]:
 

4. Construire une nouvelle table en combinant les données de deux tables.

Créer un nouveau fichier table_notes.csv avec les données ci-dessous où idNote correspond à l'identifiant d'un élève:

nom;note;mention
Rivière;18;Très bien
Konaté;15;Bien
Djérouni;12;Assez bien
Dupont;10;Passable
Dupond;08;Insuffisant
Dupons;18;Très bien
Eyoum;10;Passable
Bennett;12;Assez bien
Nicolas;18;Très bien
Martin;08;Insuffisant

In [ ]:
 
In [ ]:
 

Créer, à partir des tables table_notes.csv et dict_triplettes_sans_doublon une table eleves associant nom, prénom, note et mention

In [ ]:
 

Exercices

À l'aide d'un script Python,

  1. donner titre et année de sortie de tous les films dont le genre est Drame ;
  2. donner le nom du réalisateur de Memmento ;
  3. donner, à l'aide d'une compréhension de liste, les films dont le réalisateur est Alfred Hitchcock ;
  4. afficher le résumé et le nom du réalisateur du film Le Nom de la rose ;
  5. écrire et vérifier si les valeurs du descripteur annéeNaissance sont toutes du même type.
  6. créer une liste artistes_connus qui ne contient que les artistes dont l'année de naissance est connue.
  7. ranger cette liste dans l'ordre décroissant de l'année de naissance.
  8. donner, à l'aide d'une compréhension de liste, les réalisateurs nés après 1960 ;
  9. en utilisant l'algorithme du parcours séquentiel, écrire une fonction, compteur qui prend en entrée une liste de dictionnaires et qui renvoie pour la liste de dictionnaires issue de table_films le nombre de films français.
    Le codePays de la France est FR.
  10. Créer une table films_artistes affichant pour chaque film titre, année_sortie, genre, nom_realisateur. Un film est un dictionnaire.

Remarque : Un réalisateur est un artiste. Autrement dit, son identifiant artiste correspond à son identifiant réalisateur.

table_films
table_artistes