La gestion des données est une partie importante de l'informatique, si vous vous faites un achat sur un site en ligne l'entreprise va conserver votre nom adresse, adresse mail, historique des achats, mot de passe,... si l'entreprise à des milliers de clients elle doit pouvoir acceder rapidement aux données, les sécuriser, optimiser la place, répondre à des demandes simultanées....
Nous proposons ici une première approche des bases de données qui sera complétée en terminale.
Les fichiers CSV
Les fichiers CSV sont des fichiers qui contiennent des données sous forme de table, se sont des fichiers textes que l'on peut donc lire avec le bloc note de Windows par exemple, ou avec un tableur (la mise en forme est automatique alors).
Un fichier CSV est constitué :
D'une première ligne qui contient le nom des différentes tables, on dit le nom des attributs.
Les lignes suivantes constituent les lignes de données, chaque donnée est séparé de la suivante par une virgule ou un ;.
Pour importer un fichier CSV dans python, on utilise la bibliothèque csv de la façon suivante :
La variable table est depuis pyton 3.6 une liste de dictionnaires ordonnés (que nous utiliserons comme des dictionnaires), il y a un autre "problème" les nombres sont des chaines de caractères, soit on fait avec, soit on formate la table par exemple :
Connaitre le nombre de ligne.
len(table)
Afficher le nom des colonnes.
Le nom des colonnes sont les clefs des dictionnaires
table[0].keys() # un iterateur list(table[0].keys()) # Sous forme de liste
Afficher une information.
Pour afficher le nom et la note en math du premier élève :
print(table[0]["Nom"],table[0]["Math"])
Échanger deux lignes de la table.
table[0],table[2] = table[2],table[0]
Un exemple : étude des élèves de premiéres.
Les auteurs.
On commence les exercices sur une liste courte et retournons sur la collection des livres de Fred, cette fois Fred a décidé de conserver ses données non sous la forme d'un dictionnaire dont les clefs sont les noms des auteurs mais sous la forme d'un tableau de dictionnaire. C'est moins pratique à utiliser (par exemple ce n'est pas simple de savoir si Colette est dans la bibliothéque mais par contre on peut classer les auteurs !
Tappez dans la console la commande permettant de connaitre le deuxiéme auteur de la collection (donc l'auteur du dictionnaire d'indice 1).
Faire une fonction qui retourne le nombre de livres de la colection.
Faire une fonction classe(table,critere) qui va classer la table selon le critére donné (par exemple classe(auteurs,"Nom") doit classer les auteurs par ordre alphabétique.
Faire une fonction classe_age(table) qui va classer les auteurs par leur durée de vie.
Faire une fonction recherche dichotomique recherche(table,valeur,critere) qui va rechercher une valeur donné selon le critère donné.
Les villes de france.
Pour faire les exercices on utilisera le lien suivant (lien) ou on telechargera le fichier suivant, on télécharge liste des villes au format CSV et le début du code suivant (le CSV contient enormément de colonne et je ne veux en conserver qu'un petit nombre) :
La variable villes est une liste de dictionnaires dont voici le début :
Les questions 1,2 et 3 sont à faire directement dans la console
Donner le nom de la 100ième villes de la liste villes.
Donner le nombres total de villes recensées dans le document.
Donner le département de la ville de Rennes.
Écrire une fonction nb_villes(numero_departement) qui reçoit en paramètre un numéro de département et qui compte le nombre de villes de ce département. Donner alors le nombre de villes dans le Bas Rhin.
Écrire une fonction plus_grande() qui trouve la plus grande ville (en population) de France, la fonction doit retourner le nom de la ville. (Oui c'est Paris)
Affiner la fonction suivante pour avoir la plus grande ville d'un département donné. Donner la plus grande ville du haut Rhin.
Faire une fonction classement(nom_ville) qui retourne combien de villes en France sont plus grande que la ville donnée. Combien de villes en France sont plus grande que Wissembourg ?
Calculer la moyenne de la population des villes en France.
Les prénoms.
On utilisera le fichier suivant nat2015.zip (où passez par le site site du gouvernement français . Les données ont quatre attributs, le "sexe" (1 homme, 2 femme) le prénom usuel ("preusuel"), année de naissance ("annais" elle commence en "1900") et enfin l'effectif ("nombre") attention l'année de naissance est parfois "XXXX" pour les prénoms rares.
Charger les données dans python (utiliser import csv). Vous pouvez formater les données si vous le voulez mais attention vous devez trouver une solution au "XXXX", de plus "nombre" est une chaîne de caractère sous la forme "14.0" par exemple donc il faut le convertir d'abord en float puis en int !
Faire une fonction donne_nombre(table,prenom) qui donne le nombre de personnes qui ont eu le prénom donné en paramètre.
Améliorer la fonction précédente en une fonction donne_nombre_annees(prenom,annees = []) pour qu'elle donne le nombre d'attribution du prénom pour les années données en paramètre (donne_nombre_annees(table,"Eric",["1975","1976"]) doit donner le nombre de prénoms "Eric" donnés en 1975 ou en 1976).
Faire une fonction qui donne le prénom masculin le plus donné ? le prénom féminin ?
Faire une fonction qui pour une année donnée, donne le prénom le plus attribué.
Donner une fonction qui donne l'année d'apparition d'un prénom.