Les Bases de données.

introduction

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é :

Exemple
Nom;Prénom;Sexe;Taille;Math;NSI;
Bizier;Placide;Homme;163;11;7;
Asselin;Sylvain;Femme;194;10;10;
Blanchard;Christine;Femme;159;13;19;
	

Est la façon de stocker la table suivante au format CSV :

Table.
NomPrénomSexeTailleMathNSI
BizierPlacideHomme163117
AsselinSylvainFemme1941010
BlanchardCristineFemme1591319
Télécharger le fichier CSV

Importer des fichiers CSV dans python.

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.

Exemple

On va étudier des élèves fictifs de première, le fichier a été généré sur le site lien.

Télécharger le fichier CSV suivant Premiere.csv.

On charge.


	
Exercices
  1. Donner le nom des "colonnes" .
  2. Donner le nombre d'élèves.
  3. Donner le type des "colonnes".

Formater.

On veut formater la table (ce n'est pas obligatoire mais attention "11" ≤ "2") :


	

Classer

On peut utiliser les fonctions intégrées de python ou utiliser les fonctions de tris du programme ce que je fais ici.


	
Exercices
  1. Qui sont les meilleurs en Maths ?
  2. Qui sont les meilleurs en francais ?
  3. Donner le rang en Math de Bonnet Simone.
  4. Faire une fonction moyenne(liste) qui va calculer la moyenne d'une liste, puis moyenne élève qui va calculer la moyenne d'un élève de la table, puis trouver le meilleur élève de premiére.

Recherche dichotomique.

Noubliez pas que pour effectuer une recharche dichotomique il faut que la table soit rangée pour l'attribu de recherche (si les élèves sont rangés selon le niveau en math il ne sert à rien de faire une recherche dichotomique pour trouver un prénom).

On peut utiliser les fonctions intégrées de python ou utiliser les fonctions de tris du programme ce que je fais ici.


	
Exercices
  1. Hugo est il dans la classe ?
  2. Chesnay est il dans la classe ?

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 !


			
Exercice
  1. Tappez dans la console la commande permettant de connaitre le deuxiéme auteur de la collection (donc l'auteur du dictionnaire d'indice 1).
  2. Faire une fonction qui retourne le nombre de livres de la colection.
  3. 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.
  4. Faire une fonction classe_age(table) qui va classer les auteurs par leur durée de vie.
  5. Faire une fonction recherche dichotomique recherche(table,valeur,critere) qui va rechercher une valeur donné selon le critère donné.

Les villes de france.

Exercices

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

  1. Donner le nom de la 100ième villes de la liste villes.
  2. Donner le nombres total de villes recensées dans le document.
  3. Donner le département de la ville de Rennes.
  4. É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.
  5. É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)
  6. Affiner la fonction suivante pour avoir la plus grande ville d'un département donné. Donner la plus grande ville du haut Rhin.
  7. 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 ?
  8. Calculer la moyenne de la population des villes en France.

Les prénoms.

Exercices

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.

  1. 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 !
  2. Faire une fonction donne_nombre(table,prenom) qui donne le nombre de personnes qui ont eu le prénom donné en paramètre.
  3. 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).
  4. Faire une fonction qui donne le prénom masculin le plus donné ? le prénom féminin ?
  5. Faire une fonction qui pour une année donnée, donne le prénom le plus attribué.
  6. Donner une fonction qui donne l'année d'apparition d'un prénom.
solution

Les formations

Exercices

Nous allons étudier les voeux des lycéens en 2019, pour celà utiliser le lien suivant :

On utilisera ce lien ou le fichier suivant parcoursup.zip

Pour formater les données on utilisera le début suivant :


		

Attention le numéro de département n'est pas formaté (à cause de la corse).

  1. Faire une fonction tri(table,critère) de tri des données pour un critère donné.
  2. Faire une fonction pour donner les formations où il y a 100% de mention très bien en demande.
  3. Donner la formation la plus demandée de France.
  4. Donner la formation le rapport demande sur nb place est la plus élevé en France.
  5. Donner les formations du lycée (Le code de l'établissement est : 0670114K.