4. Données en table

Qu'est-ce qu'une table ?

On se retrouve parfois à devoir manipuler des tas d'informations qui ont de fortes similarités : par exemple, une liste de pays avec le code international du pays, le nom de sa monnaie, le symbole de sa monnaie, sa population, ...

On organise alors ces données en table ou tableau : dans une colonne, on met tous les pays, dans une autre, on met leur population, ... Chaque élément d'une colonne est du même type : par exemple, dans la colonne des noms de pays, on ne retrouve que des noms de pays. C'est donc un même type sémantique, mais aussi un même type de représentation des données (le nom d'un pays sera représenté par une chaîne de caractère, la population par un entier).

Une table est donc un type construit de données comprenant

Le format text/csv

Une manière courante de sauvegarder ou de distribuer de telles données est d'utiliser le format texte csv (en anglais comma-separated values). Chaque ligne du fichier texte correspond à une ligne de la table et les virgules correspondent aux séparations entre les colonnes. Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules du tableau. Une ligne est une suite ordonnée de caractères terminée par un caractère de fin de ligne (line break – LF ou CRLF).

Pour utiliser le format csv, il ne faut pas que le caractère de séparation (la virgule par défaut) soit utilisé dans les données. Si besoin, on en change (le point virgule ; est souvent utilisé).

Voici les premières lignes du fichier countries.csv

				
iso;name;area;population;continent;currency_code;currency_name;capital
AD;Andorra;468.0;84000;EU;EUR;Euro;6
AE;United Arab Emirates;82880.0;4975593;AS;AED;Dirham;21
AF;Afghanistan;647500.0;29121286;AS;AFN;Afghani;81
AG;Antigua and Barbuda;443.0;86754;NA;XCD;Dollar;119
AI;Anguilla;102.0;13254;NA;XCD;Dollar;126
AL;Albania;28748.0;2986952;EU;ALL;Lek;157
AM;Armenia;29800.0;2968000;AS;AMD;Dram;191
AO;Angola;1246700.0;13068161;AF;AOA;Kwanza;235
AR;Argentina;2766890.0;41343201;SA;ARS;Peso;382
				
			

exercice_C21.py

  1. En partant du fichier countries.csv, écrire une fonction lecture_csv(nom_fichier, separator) qui renvoie une liste de liste des éléments de chaque ligne.
  2. Ecrire une fonction cherche(liste_de_liste, motif, colonne) qui renvoie le nombre de fois que le motif motif est trouvé dans la colonne numéro colonne de la liste_de_liste.
  3. Combien de pays utilise une monnaie appelé dollar ? Idem pour l'euro ?
  4. La capitale de chaque pays est représentée sous la forme d'un entier. Pour la trouver, il faut utiliser le fichier des villes. Ecrire une fonction affiche_capitale_pays(fichier_cvs1, separator1, fichier_cvs2, separator2) qui affiche la liste des pays avec leur capitale. Vous devriez avoir des lignes du genre :
    Pays : Capitale
    Andorra : Andorra la Vella
    United Arab Emirates : Abu Dhabi
  5. Trouver la liste des villes qui ont une latitude comprise entre -10 et -20 degrés (on sera donc dans l'hémisphère Sud) et qui utilise une monnaie appelée Peso. Pour cela, on écrira une fonction villes_latitude_monnaie(fichier_cvs1, separator1, fichier_cvs2, separator2).

exercice_C22.py

Reprendre l'exercice 1, mais au lieu de faire des listes de liste, utiliser un dictionnaire. Vous prendrez les mêmes noms de fonction que dans l'exercice 1, mais en ajoutant le suffixe 2 : ainsi votre première fonction de l'exercice 2 sera lecture_csv2(nom_fichier, separator).
Normalement, vous devriez obtenir les mêmes résultats entre vos fonctions de l'exercice C21 et celles de l'exercice C22.