TP - La table Base Aliens☘
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.20.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 - Sélection de données☘
-
Enregistrez dans votre répertoire de travail la table de données
BaseAliens.csv
, téléchargeable en cliquant sur ce lien. -
Importez cette table de données dans une variable nommée
table_aliens
.
Convertissez sous forme d'entiers les valeurs qui le nécessitent. -
Affichez cette table dans la console dictionnaire par dictionnaire.
Affichage à obtenir
{'NoCabine': 1, 'NomAlien': 'Zorglub', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 2, 'NomAlien': 'Blorx', 'Sexe': 'M', 'Planete': 'Euterpe'} {'NoCabine': 3, 'NomAlien': 'Urxiz', 'Sexe': 'M', 'Planete': 'Aurora'} {'NoCabine': 4, 'NomAlien': 'Zbleurdite', 'Sexe': 'F', 'Planete': 'Trantor'} {'NoCabine': 5, 'NomAlien': 'Darneurane', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 6, 'NomAlien': 'Mulzo', 'Sexe': 'M', 'Planete': 'Helicon'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz', 'Sexe': 'F', 'Planete': 'Aurora'} {'NoCabine': 8, 'NomAlien': 'Arghh', 'Sexe': 'M', 'Planete': 'Nexon'} {'NoCabine': 9, 'NomAlien': 'Joranum', 'Sexe': 'F', 'Planete': 'Euterpe'}
-
Extraire les informations sur les aliens qui ont un numéro de cabine (strictement) supérieur à 5.
Placez ces informations dans une nouvelle table nomméetable_aliens2
.Affichage à obtenir
{'NoCabine': 6, 'NomAlien': 'Mulzo', 'Sexe': 'M', 'Planete': 'Helicon'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz', 'Sexe': 'F', 'Planete': 'Aurora'} {'NoCabine': 8, 'NomAlien': 'Arghh', 'Sexe': 'M', 'Planete': 'Nexon'} {'NoCabine': 9, 'NomAlien': 'Joranum', 'Sexe': 'F', 'Planete': 'Euterpe'}
-
Extraire les informations sur les aliens qui sont originaire de la planète Trantor.
Placez ces informations dans une nouvelle table nomméetable_aliens3
.Affichage à obtenir
{'NoCabine': 1, 'NomAlien': 'Zorglub', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 4, 'NomAlien': 'Zbleurdite', 'Sexe': 'F', 'Planete': 'Trantor'} {'NoCabine': 5, 'NomAlien': 'Darneurane', 'Sexe': 'M', 'Planete': 'Trantor'}
-
Extraire les informations sur les aliens dont le nom contient la lettre « z » (minuscule ou majuscule).
Placez ces informations dans une nouvelle table nomméetable_aliens4
.Affichage à obtenir
{'NoCabine': 1, 'NomAlien': 'Zorglub', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 3, 'NomAlien': 'Urxiz', 'Sexe': 'M', 'Planete': 'Aurora'} {'NoCabine': 4, 'NomAlien': 'Zbleurdite', 'Sexe': 'F', 'Planete': 'Trantor'} {'NoCabine': 6, 'NomAlien': 'Mulzo', 'Sexe': 'M', 'Planete': 'Helicon'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz', 'Sexe': 'F', 'Planete': 'Aurora'}
Partie 2 - Valeurs d'attributs☘
-
Copiez/collez et complétez la définition de la fonction
tableau_valeurs_distinctes()
en respectant ses spécifications.1 2 3 4 5 6 7 8
def tableau_valeurs_distinctes(table, attribut): """ table - list, Table de données représentée par un tableau de dictionnaires ayant tous les mêmes clefs attribut - str, chaîne de caractères étant une clef de cette table Sortie: list - tableau contenant les valeurs distinctes prises par la clef attribut dans table. Attention, il ne doit pas y avoir de doublon. """
Exemple de tests
>>> tableau_valeurs_distinctes(table_aliens, 'Planete') ['Trantor', 'Euterpe', 'Aurora', 'Helicon', 'Nexon']
Une piste
On construit un tableau dans lequel on ajoute au fur et à mesure de la lecture les nouvelles valeurs. Si la nouvelle valeur lue est déjà présente dans le tableau, on ne la place pas à nouveau dans celui-ci.
-
Copiez/collez et complétez la définition de la fonction
valeurs_toutes_distinctes()
en respectant ses spécifications.1 2 3 4 5 6 7 8
def valeurs_toutes_distinctes(table, attribut): """ table - list, Table de données représentée par un tableau de dictionnaires ayant tous les mêmes clefs attribut - str, chaîne de caractères étant une clef de cette table Sortie: bool - True si toutes les valeurs de la clé attribut sont différentes, False sinon. """
Exemple de tests
>>> valeurs_toutes_distinctes(table_aliens, 'Planete') False >>> valeurs_toutes_distinctes(table_aliens, 'NoCabine') True
Une piste
C'est presque le même principe que l'exercice précédent...
Partie 3 - Projection (sélection de colonnes)☘
-
Extraire la table composée uniquement du nom et du numéro de cabine de ces aliens.
Placez ces informations dans une nouvelle table nomméetable_aliens5
.Affichage à obtenir
{'NoCabine': 1, 'NomAlien': 'Zorglub'} {'NoCabine': 2, 'NomAlien': 'Blorx'} {'NoCabine': 3, 'NomAlien': 'Urxiz'} {'NoCabine': 4, 'NomAlien': 'Zbleurdite'} {'NoCabine': 5, 'NomAlien': 'Darneurane'} {'NoCabine': 6, 'NomAlien': 'Mulzo'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz'} {'NoCabine': 8, 'NomAlien': 'Arghh'} {'NoCabine': 9, 'NomAlien': 'Joranum'}
-
Extraire la table composée uniquement du sexe et de la planète de ces aliens.
Placez ces informations dans une nouvelle table nomméetable_aliens6
.Affichage à obtenir
{'Sexe': 'M', 'Planete': 'Trantor'} {'Sexe': 'M', 'Planete': 'Euterpe'} {'Sexe': 'M', 'Planete': 'Aurora'} {'Sexe': 'F', 'Planete': 'Trantor'} {'Sexe': 'M', 'Planete': 'Trantor'} {'Sexe': 'M', 'Planete': 'Helicon'} {'Sexe': 'F', 'Planete': 'Aurora'} {'Sexe': 'M', 'Planete': 'Nexon'} {'Sexe': 'F', 'Planete': 'Euterpe'}
-
Extraire la table composée uniquement des numéros de cabine et du nom des aliens de sexe masculin.
Placez ces informations dans une nouvelle table nomméetable_aliens7
.Affichage à obtenir
{'NoCabine': 1, 'NomAlien': 'Zorglub'} {'NoCabine': 2, 'NomAlien': 'Blorx'} {'NoCabine': 3, 'NomAlien': 'Urxiz'} {'NoCabine': 5, 'NomAlien': 'Darneurane'} {'NoCabine': 6, 'NomAlien': 'Mulzo'} {'NoCabine': 8, 'NomAlien': 'Arghh'}
Une piste
Une seule instruction ne suffira pas...
-
Extraire la table composée uniquement du nom des aliens dont le nom de planète termine par la lettre «
n
».
Placez ces informations dans une nouvelle table nomméetable_aliens8
.Affichage à obtenir
{'NomAlien': 'Mulzo'} {'NomAlien': 'Arghh'}
Une piste
Une seule instruction ne suffira pas.
De plus, on rappelle qu'en Python, le dernier élément d'une séquence a pour indicelen(sequence)-1
ou, plus simplement,-1
.
Partie 4 - Tri des données☘
-
Triez la table
table_aliens
par ordre croissant du nom des aliens dans une nouvelle table nomméetable_aliens9
. Vous pouvez 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
{'NoCabine': 8, 'NomAlien': 'Arghh', 'Sexe': 'M', 'Planete': 'Nexon'} {'NoCabine': 2, 'NomAlien': 'Blorx', 'Sexe': 'M', 'Planete': 'Euterpe'} {'NoCabine': 5, 'NomAlien': 'Darneurane', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 9, 'NomAlien': 'Joranum', 'Sexe': 'F', 'Planete': 'Euterpe'} {'NoCabine': 6, 'NomAlien': 'Mulzo', 'Sexe': 'M', 'Planete': 'Helicon'} {'NoCabine': 3, 'NomAlien': 'Urxiz', 'Sexe': 'M', 'Planete': 'Aurora'} {'NoCabine': 4, 'NomAlien': 'Zbleurdite', 'Sexe': 'F', 'Planete': 'Trantor'} {'NoCabine': 1, 'NomAlien': 'Zorglub', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz', 'Sexe': 'F', 'Planete': 'Aurora'}
-
Triez la table
table_aliens
par ordre croissant du sexe puis par ordre décroissant des noms de planète dans une nouvelle table nomméetable_aliens10
.
Affichez cette table triée dans la console dictionnaire par dictionnaire.Affichage à obtenir
{'NoCabine': 4, 'NomAlien': 'Zbleurdite', 'Sexe': 'F', 'Planete': 'Trantor'} {'NoCabine': 9, 'NomAlien': 'Joranum', 'Sexe': 'F', 'Planete': 'Euterpe'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz', 'Sexe': 'F', 'Planete': 'Aurora'} {'NoCabine': 1, 'NomAlien': 'Zorglub', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 5, 'NomAlien': 'Darneurane', 'Sexe': 'M', 'Planete': 'Trantor'} {'NoCabine': 8, 'NomAlien': 'Arghh', 'Sexe': 'M', 'Planete': 'Nexon'} {'NoCabine': 6, 'NomAlien': 'Mulzo', 'Sexe': 'M', 'Planete': 'Helicon'} {'NoCabine': 2, 'NomAlien': 'Blorx', 'Sexe': 'M', 'Planete': 'Euterpe'} {'NoCabine': 3, 'NomAlien': 'Urxiz', 'Sexe': 'M', 'Planete': 'Aurora'}
Partie 5 - Jointure☘
-
Enregistrez dans votre répertoire de travail la table de données
BaseAliens2.csv
, téléchargeable en cliquant sur ce lien. -
Importez cette table de données dans une variable nommée
info_aliens
.
Convertissez sous forme d'entiers les valeurs qui le nécessitent. -
Fusionnez les tables
table_aliens
etinfo_aliens
en une seule nomméealiens
.
Affichez cette table dans la console dictionnaire par dictionnaire.Affichage à obtenir
{'NoCabine': 1, 'NomAlien': 'Zorglub', 'Sexe': 'M', 'Planete': 'Trantor', 'Age': '43', 'Taille': '164'} {'NoCabine': 2, 'NomAlien': 'Blorx', 'Sexe': 'M', 'Planete': 'Euterpe', 'Age': '53', 'Taille': '654'} {'NoCabine': 3, 'NomAlien': 'Urxiz', 'Sexe': 'M', 'Planete': 'Aurora', 'Age': '50', 'Taille': '16'} {'NoCabine': 4, 'NomAlien': 'Zbleurdite', 'Sexe': 'F', 'Planete': 'Trantor', 'Age': '439', 'Taille': '189'} {'NoCabine': 5, 'NomAlien': 'Darneurane', 'Sexe': 'M', 'Planete': 'Trantor', 'Age': '4', 'Taille': '664'} {'NoCabine': 6, 'NomAlien': 'Mulzo', 'Sexe': 'M', 'Planete': 'Helicon', 'Age': '564', 'Taille': '327'} {'NoCabine': 7, 'NomAlien': 'Zzzzzz', 'Sexe': 'F', 'Planete': 'Aurora', 'Age': '48', 'Taille': '134'} {'NoCabine': 8, 'NomAlien': 'Arghh', 'Sexe': 'M', 'Planete': 'Nexon', 'Age': '876', 'Taille': '87'} {'NoCabine': 9, 'NomAlien': 'Joranum', 'Sexe': 'F', 'Planete': 'Euterpe', 'Age': '23', 'Taille': '187'}
-
Exportez cette table dans un fichier nommé
BaseAliens3.csv
.
Ouvrez ce fichier à l'aide d'un éditeur de texte et vérifiez son contenu.Affichage à obtenir
NoCabine,NomAlien,Sexe,Planete,Age,Taille 1,Zorglub,M,Trantor,43,164 2,Blorx,M,Euterpe,53,654 3,Urxiz,M,Aurora,50,16 4,Zbleurdite,F,Trantor,439,189 5,Darneurane,M,Trantor,4,664 6,Mulzo,M,Helicon,564,327 7,Zzzzzz,F,Aurora,48,134 8,Arghh,M,Nexon,876,87 9,Joranum,F,Euterpe,23,187
-
Conservez uniquement les attributs
'NomAlien'
,'Age'
et'Planete'
de la tablealiens
, triez les données par ordre croissant des noms de planète puis exportez cette table dans un fichier nomméBaseAliens4.csv
.
Ouvrez ce fichier à l'aide d'un éditeur de texte et vérifiez son contenu.Affichage à obtenir
NomAlien,Age,Planete Urxiz,50,Aurora Zzzzzz,48,Aurora Blorx,53,Euterpe Joranum,23,Euterpe Mulzo,564,Helicon Arghh,876,Nexon Zorglub,43,Trantor Zbleurdite,439,Trantor Darneurane,4,Trantor