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 |
|
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 :
- Dans l'interface, repérez, en bas à droite, l'Explorateur de fichiers :
- En cliquant sur l'icône , on remonte d'un dossier.
En cliquant sur un dossier, on l'ouvre : - Rendez-vous dans le dossier
[NSI_Tables_Donnees]
.
Une fois dans ce dossier, cliquer sur l'étoile : -
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)] : -
Dans la console, le changement de dossier est effectif :
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☘
-
Enregistrez dans votre répertoire de travail la table de données
personnes.csv
, téléchargeable en cliquant sur ce lien. -
Importez cette table de données dans une variable nommée
personnes
. -
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'}
-
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}
-
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}")
-
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
-
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é
-
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
-
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
-
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☘
-
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)
-
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}
-
Sélectionnez uniquement les nom et prenom des personnes de la table
personnes
. Les placer dans une nouvelle table nomméenom_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'}
-
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éenom_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☘
-
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)
-
Enregistrez dans votre répertoire de travail la table de données
commandes.csv
, téléchargeable en cliquant sur ce lien. -
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 '}
-
Réalisez la jointure entre les tables
personnes
etcommandes
.
Placez les informations obtenues dans une nouvelle table nomméepersonnes_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'}
-
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'}