Aller au contenu

TP - La table Personnes

Si ce n'est pas encore fait, téléchargez et enregistrez le module fonctions_csv.py dans le dossier [NSI_Tables_Donnees].

Rappel

Ce module contient toutes les fonctions indispensables pour effectuer les requêtes demandées au cours de ce TP.

Les programmes réalisés devront commencer par l'importation du module fonctions_csv.py, c'est-à-dire par l'instruction :

1
from fonctions_csv import *

Remarque importante pour ceux qui utilisent Pyzo

Pour travailler sur des fichiers avec Pyzo, le plus simple est de déplacer le shell dans le répertoire de travail. Pour cela :

  1. Dans l'interface, repérez, en bas à droite, l'Explorateur de fichiers : Pyzo 01
  2. En cliquant sur l'icône , on remonte d'un dossier.
    En cliquant sur un dossier, on l'ouvre : Pyzo 03
  3. Rendez-vous dans le dossier [NSI_Tables_Donnees].
    Une fois dans ce dossier, cliquer sur l'étoile : Pyzo 04
  4. L'étoile devient jaune, avec un petite flèche en bas à droite.
    Cliquez sur cette petite flèche et sélectionnez [Allez dans ce dossier (shell courant)] : Pyzo 06

  5. Dans la console, le changement de dossier est effectif : Pyzo 07

Vous pouvez désormais travailler (importer/exporter) avec les fichiers CSV qui seront placés dans le dossier [NSI_Tables_Donnees].

Ce TP a pour but de concevoir un programme complet permettant d'extraire et de trier des données provenant d'un fichier de données CSV.

Téléchargez le fichier « à trous » TPC02.10.py (clic droit -> [Enregistrer la cible du lien sous]) et enregistrez-le dans le dossier [NSI_Tables_Donnees].

Important

Appelez régulièrement l'enseignant pour vérifier votre avancement.

Partie 1 - Recherche « simple » de données

  1. Enregistrez dans votre répertoire de travail la table de données personnes.csv, téléchargeable en cliquant sur ce lien.

  2. Importez cette table de données dans une variable nommée personnes.

  3. Affichez cette table dans la console dictionnaire par dictionnaire.

    Affichage à obtenir
    {'id_personne': '1', 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': '2000'}
    {'id_personne': '2', 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': '1985'}
    {'id_personne': '3', 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': '2001'}
    {'id_personne': '4', 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': '1975'}
    {'id_personne': '5', 'nom': 'Térieur', 'prenom': 'Alain', 'annee_naissance': '1999'}
    {'id_personne': '6', 'nom': 'Térieur', 'prenom': 'Alex', 'annee_naissance': '1976'}
    {'id_personne': '7', 'nom': 'Proviste', 'prenom': 'Alain', 'annee_naissance': '2000'}
    {'id_personne': '8', 'nom': 'Verse', 'prenom': 'Alain', 'annee_naissance': '1970'}
    {'id_personne': '9', 'nom': 'Ception', 'prenom': 'Alex', 'annee_naissance': '2001'}
    {'id_personne': '10', 'nom': 'Ainé', 'prenom': 'Ali', 'annee_naissance': '1975'}
    {'id_personne': '11', 'nom': 'Gator', 'prenom': 'Ali', 'annee_naissance': '2001'}
    {'id_personne': '12', 'nom': 'Bistraux', 'prenom': 'Alonzo', 'annee_naissance': '2001'}
    {'id_personne': '13', 'nom': 'Patamob', 'prenom': 'Alphonse', 'annee_naissance': '1970'}
    {'id_personne': '14', 'nom': 'Ficulté', 'prenom': 'Andy', 'annee_naissance': '1980'}
    {'id_personne': '15', 'nom': 'Rectdustade', 'prenom': 'Andy', 'annee_naissance': '2000'}
    {'id_personne': '16', 'nom': 'Verserre', 'prenom': 'Annie', 'annee_naissance': '2001'}
    {'id_personne': '17', 'nom': 'Boréal', 'prenom': 'Aurore', 'annee_naissance': '1985'}
    {'id_personne': '18', 'nom': 'Nor', 'prenom': 'Paul', 'annee_naissance': '1985'}
    {'id_personne': '19', 'nom': 'Dejeu', 'prenom': 'Bernadette', 'annee_naissance': '2001'}
    {'id_personne': '20', 'nom': 'Dajeun', 'prenom': 'Bruno', 'annee_naissance': '1984'}
    {'id_personne': '21', 'nom': 'Hiple', 'prenom': 'Candice', 'annee_naissance': '2000'}
    
  4. Convertissez sous forme d'entiers les valeurs qui le nécessitent.
    Afficher à nouveau cette table pour vérifier la conversion.

    Affichage à obtenir
    {'id_personne': 1, 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': 2000}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985}
    {'id_personne': 3, 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': 2001}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975}
    {'id_personne': 5, 'nom': 'Térieur', 'prenom': 'Alain', 'annee_naissance': 1999}
    {'id_personne': 6, 'nom': 'Térieur', 'prenom': 'Alex', 'annee_naissance': 1976}
    {'id_personne': 7, 'nom': 'Proviste', 'prenom': 'Alain', 'annee_naissance': 2000}
    {'id_personne': 8, 'nom': 'Verse', 'prenom': 'Alain', 'annee_naissance': 1970}
    {'id_personne': 9, 'nom': 'Ception', 'prenom': 'Alex', 'annee_naissance': 2001}
    {'id_personne': 10, 'nom': 'Ainé', 'prenom': 'Ali', 'annee_naissance': 1975}
    {'id_personne': 11, 'nom': 'Gator', 'prenom': 'Ali', 'annee_naissance': 2001}
    {'id_personne': 12, 'nom': 'Bistraux', 'prenom': 'Alonzo', 'annee_naissance': 2001}
    {'id_personne': 13, 'nom': 'Patamob', 'prenom': 'Alphonse', 'annee_naissance': 1970}
    {'id_personne': 14, 'nom': 'Ficulté', 'prenom': 'Andy', 'annee_naissance': 1980}
    {'id_personne': 15, 'nom': 'Rectdustade', 'prenom': 'Andy', 'annee_naissance': 2000}
    {'id_personne': 16, 'nom': 'Verserre', 'prenom': 'Annie', 'annee_naissance': 2001}
    {'id_personne': 17, 'nom': 'Boréal', 'prenom': 'Aurore', 'annee_naissance': 1985}
    {'id_personne': 18, 'nom': 'Nor', 'prenom': 'Paul', 'annee_naissance': 1985}
    {'id_personne': 19, 'nom': 'Dejeu', 'prenom': 'Bernadette', 'annee_naissance': 2001}
    {'id_personne': 20, 'nom': 'Dajeun', 'prenom': 'Bruno', 'annee_naissance': 1984}
    {'id_personne': 21, 'nom': 'Hiple', 'prenom': 'Candice', 'annee_naissance': 2000}
    
  5. Dans cette table, existe-t-il une personne née en 1990 ?
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    Personne née en 1990 ? False
    
    Une solution
    1
    2
    ne_en_1990 = est_presente(personnes, 'annee_naissance', 1990)
    print(f"Personne née en 1990 ? {ne_en_1990}")
    
  6. Dans cette table, existe-t-il une personne prénommée Aurore ?
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    Personne prénommée Aurore ? True
    
  7. Quel est le nom de la personne née en 1980, si une telle personne existe ?
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    Nom d'une personne née en 1980 ? Ficulté
    
  8. Quelle est l'année de naissance de la personne prénommée Alain, si une telle personne existe ?
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    Année de naissance d'une personne prénommée Alain ? 1999
    
  9. Combien y a-t-il de personnes nées en 2001 ?
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    Nombre de personnes nées en 2001 : 6
    
  10. Combien y a-t-il de personnes prénommées Sonia ?
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    Nombre de personnes prénommées Sonia : 0
    

Partie 2 - Sélection de lignes, de colonnes

  1. Sélectionnez les personnes qui sont nées avant 1990 et les placer dans une nouvelle table nommée personnes_jeunes.
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975}
    {'id_personne': 6, 'nom': 'Térieur', 'prenom': 'Alex', 'annee_naissance': 1976}
    {'id_personne': 8, 'nom': 'Verse', 'prenom': 'Alain', 'annee_naissance': 1970}
    {'id_personne': 10, 'nom': 'Ainé', 'prenom': 'Ali', 'annee_naissance': 1975}
    {'id_personne': 13, 'nom': 'Patamob', 'prenom': 'Alphonse', 'annee_naissance': 1970}
    {'id_personne': 14, 'nom': 'Ficulté', 'prenom': 'Andy', 'annee_naissance': 1980}
    {'id_personne': 17, 'nom': 'Boréal', 'prenom': 'Aurore', 'annee_naissance': 1985}
    {'id_personne': 18, 'nom': 'Nor', 'prenom': 'Paul', 'annee_naissance': 1985}
    {'id_personne': 20, 'nom': 'Dajeun', 'prenom': 'Bruno', 'annee_naissance': 1984}
    
    Une solution
    1
    2
    3
    personnes_jeunes = [dico for dico in personnes if dico['annee_naissance'] < 1990]
    for dico in personnes_jeunes:
        print(dico)
    
  2. Sélectionnez les personnes qui sont nées après 1980 et qui se prénomment Alain. Les placer dans une nouvelle table nommée alain_1980. Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    {'id_personne': 5, 'nom': 'Térieur', 'prenom': 'Alain', 'annee_naissance': 1999}
    {'id_personne': 7, 'nom': 'Proviste', 'prenom': 'Alain', 'annee_naissance': 2000}
    
  3. Sélectionnez uniquement les nom et prenom des personnes de la table personnes. Les placer dans une nouvelle table nommée nom_prenom.
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir
    {'nom': 'Labrosse', 'prenom': 'Adam'}
    {'nom': 'Gemlamorte', 'prenom': 'Adèle'}
    {'nom': 'Auboisdormant', 'prenom': 'Abel'}
    {'nom': 'Etpan', 'prenom': 'Ahmed'}
    {'nom': 'Térieur', 'prenom': 'Alain'}
    {'nom': 'Térieur', 'prenom': 'Alex'}
    {'nom': 'Proviste', 'prenom': 'Alain'}
    {'nom': 'Verse', 'prenom': 'Alain'}
    {'nom': 'Ception', 'prenom': 'Alex'}
    {'nom': 'Ainé', 'prenom': 'Ali'}
    {'nom': 'Gator', 'prenom': 'Ali'}
    {'nom': 'Bistraux', 'prenom': 'Alonzo'}
    {'nom': 'Patamob', 'prenom': 'Alphonse'}
    {'nom': 'Ficulté', 'prenom': 'Andy'}
    {'nom': 'Rectdustade', 'prenom': 'Andy'}
    {'nom': 'Verserre', 'prenom': 'Annie'}
    {'nom': 'Boréal', 'prenom': 'Aurore'}
    {'nom': 'Nor', 'prenom': 'Paul'}
    {'nom': 'Dejeu', 'prenom': 'Bernadette'}
    {'nom': 'Dajeun', 'prenom': 'Bruno'}
    {'nom': 'Hiple', 'prenom': 'Candice'}
    
  4. Sélectionnez les nom et année de naissance des personnes de la table personnes. Dans cette table, ne garder que les noms qui commencent par la lettre « A ». Les placer dans une nouvelle table nommée nom_annee_A.
    Recherchez à l'aide de l'instruction adéquate puis affichez la réponse dans la console.

    Affichage à obtenir

    {'nom': 'Auboisdormant', 'annee_naissance': 2001}
    {'nom': 'Ainé', 'annee_naissance': 1975
    

Partie 3 - Tri d'informations et jointure

  1. Triez la table personnes par ordre décroissant d'année de naissance (effet de bord). Il faudra définir une fonction auxiliaire qui servira de critère de tri au préalable.
    Affichez cette table triée dans la console dictionnaire par dictionnaire.

    Affichage à obtenir
    {'id_personne': 3, 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': 2001}
    {'id_personne': 9, 'nom': 'Ception', 'prenom': 'Alex', 'annee_naissance': 2001}
    {'id_personne': 11, 'nom': 'Gator', 'prenom': 'Ali', 'annee_naissance': 2001}
    {'id_personne': 12, 'nom': 'Bistraux', 'prenom': 'Alonzo', 'annee_naissance': 2001}
    {'id_personne': 16, 'nom': 'Verserre', 'prenom': 'Annie', 'annee_naissance': 2001}
    {'id_personne': 19, 'nom': 'Dejeu', 'prenom': 'Bernadette', 'annee_naissance': 2001}
    {'id_personne': 1, 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': 2000}
    {'id_personne': 7, 'nom': 'Proviste', 'prenom': 'Alain', 'annee_naissance': 2000}
    {'id_personne': 15, 'nom': 'Rectdustade', 'prenom': 'Andy', 'annee_naissance': 2000}
    {'id_personne': 21, 'nom': 'Hiple', 'prenom': 'Candice', 'annee_naissance': 2000}
    {'id_personne': 5, 'nom': 'Térieur', 'prenom': 'Alain', 'annee_naissance': 1999}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985}
    {'id_personne': 17, 'nom': 'Boréal', 'prenom': 'Aurore', 'annee_naissance': 1985}
    {'id_personne': 18, 'nom': 'Nor', 'prenom': 'Paul', 'annee_naissance': 1985}
    {'id_personne': 20, 'nom': 'Dajeun', 'prenom': 'Bruno', 'annee_naissance': 1984}
    {'id_personne': 14, 'nom': 'Ficulté', 'prenom': 'Andy', 'annee_naissance': 1980}
    {'id_personne': 6, 'nom': 'Térieur', 'prenom': 'Alex', 'annee_naissance': 1976}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975}
    {'id_personne': 10, 'nom': 'Ainé', 'prenom': 'Ali', 'annee_naissance': 1975}
    {'id_personne': 8, 'nom': 'Verse', 'prenom': 'Alain', 'annee_naissance': 1970}
    {'id_personne': 13, 'nom': 'Patamob', 'prenom': 'Alphonse', 'annee_naissance': 1970}
    
    Une solution
    1
    2
    3
    4
    5
    6
    def naissance(dico):
        return dico['annee_naissance']
    
    personnes.sort(key=naissance, reverse=True)
    for dico in personnes:
        print(dico)
    
  2. Enregistrez dans votre répertoire de travail la table de données commandes.csv, téléchargeable en cliquant sur ce lien.

  3. Importez cette table de données dans une variable nommée commandes.
    Convertissez sous forme d'entiers les valeurs qui le nécessitent puis affichez cette table dans la console dictionnaire par dictionnaire.

    Affichage à obtenir
    {'id_commande': 1, 'id_personne': 2, 'descriptif': 'bouilloire'}
    {'id_commande': 2, 'id_personne': 3, 'descriptif': 'Livre Apprende Python '}
    {'id_commande': 3, 'id_personne': 2, 'descriptif': 'Livre Apprendre HTML '}
    {'id_commande': 4, 'id_personne': 4, 'descriptif': 'Livre Apprendre CSS '}
    {'id_commande': 5, 'id_personne': 6, 'descriptif': 'couverture'}
    {'id_commande': 6, 'id_personne': 4, 'descriptif': 'VTT'}
    {'id_commande': 7, 'id_personne': 4, 'descriptif': 'smartphone'}
    {'id_commande': 8, 'id_personne': 1, 'descriptif': 'cahiers'}
    {'id_commande': 9, 'id_personne': 2, 'descriptif': 'Livre Le réseau internet '}
    {'id_commande': 10, 'id_personne': 3, 'descriptif': 'Livre Les systèmes d’exploitation'}
    {'id_commande': 11, 'id_personne': 1, 'descriptif': 'Livre Algorithmique '}
    
  4. Réalisez la jointure entre les tables personnes et commandes.
    Placez les informations obtenues dans une nouvelle table nommée personnes_commandes.
    Affichez cette table dans la console dictionnaire par dictionnaire.

    Affichage à obtenir
    {'id_personne': 3, 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': 2001, 'id_commande': 2, 'descriptif': 'Livre Apprende Python '}
    {'id_personne': 3, 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': 2001, 'id_commande': 10, 'descriptif': 'Livre Les systèmes d’exploitation'}
    {'id_personne': 1, 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': 2000, 'id_commande': 8, 'descriptif': 'cahiers'}
    {'id_personne': 1, 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': 2000, 'id_commande': 11, 'descriptif': 'Livre Algorithmique '}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985, 'id_commande': 1, 'descriptif': 'bouilloire'}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985, 'id_commande': 3, 'descriptif': 'Livre Apprendre HTML '}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985, 'id_commande': 9, 'descriptif': 'Livre Le réseau internet '}
    {'id_personne': 6, 'nom': 'Térieur', 'prenom': 'Alex', 'annee_naissance': 1976, 'id_commande': 5, 'descriptif': 'couverture'}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975, 'id_commande': 4, 'descriptif': 'Livre Apprendre CSS '}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975, 'id_commande': 6, 'descriptif': 'VTT'}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975, 'id_commande': 7, 'descriptif': 'smartphone'}
    
  5. Triez la table personnes_commandes précédente selon l'ordre croissant des noms des clients et, pour un même client, suivant l'ordre croissant des numéros de commande.
    Affichez à nouveau cette table dans la console dictionnaire par dictionnaire.

    Affichage à obtenir
    {'id_personne': 3, 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': 2001, 'id_commande': 2, 'descriptif': 'Livre Apprende Python '}
    {'id_personne': 3, 'nom': 'Auboisdormant', 'prenom': 'Abel', 'annee_naissance': 2001, 'id_commande': 10, 'descriptif': 'Livre Les systèmes d’exploitation'}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975, 'id_commande': 4, 'descriptif': 'Livre Apprendre CSS '}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975, 'id_commande': 6, 'descriptif': 'VTT'}
    {'id_personne': 4, 'nom': 'Etpan', 'prenom': 'Ahmed', 'annee_naissance': 1975, 'id_commande': 7, 'descriptif': 'smartphone'}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985, 'id_commande': 1, 'descriptif': 'bouilloire'}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985, 'id_commande': 3, 'descriptif': 'Livre Apprendre HTML '}
    {'id_personne': 2, 'nom': 'Gemlamorte', 'prenom': 'Adèle', 'annee_naissance': 1985, 'id_commande': 9, 'descriptif': 'Livre Le réseau internet '}
    {'id_personne': 1, 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': 2000, 'id_commande': 8, 'descriptif': 'cahiers'}
    {'id_personne': 1, 'nom': 'Labrosse', 'prenom': 'Adam', 'annee_naissance': 2000, 'id_commande': 11, 'descriptif': 'Livre Algorithmique '}
    {'id_personne': 6, 'nom': 'Térieur', 'prenom': 'Alex', 'annee_naissance': 1976, 'id_commande': 5, 'descriptif': 'couverture'}