Connexion élèves

Choisir le(s) module(s) à installer :
La gestion de grande quantité de donnée ou "Big Data" est un des enjeux importants de l'informatique appliquée depuis les années 2000.
Nous allons dans cette partie tenter de gérer des grandes quantités de données.

Indexation des données en tables

Dans cette partie nous allons utiliser ce fichier de données countries.csv. Ce fichier contient des données générales sur les pays du monde, en voici un extrait :
les pays du monde

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
				
Le format csv, signifie "comma separated values" ou "valeurs séparées par une virgule". Il permet de récupérer des données brutes, sans aucune mise en forme.
Ce format universel permet de partager des données entre de nombreuses applications.
Le séparateur "virgule" n'est plus le seul séparateur utilisé, en effet, cela pose des problèmes pour séparer des valeurs contenant elles même des virgules. On peut donc choisir d'autres séparateurs comme présenté ci-dessous :
import d'un fichier csv dans le tableur de libre office
Pour bien différencier le nom du pays de façon générale (la colonne name) du nom d'un pays en particulier (Angola, Australia...), on différencie le champ de sa valeur :
Un peu de vocabulaire

Indexation sous forme de tableau de tableaux

Une première solution pour utiliser et indexer ce fichier en python est la suivante :

import csv

def index_tableau(nomDeFichier):
    tab=[]
    with open(nomDeFichier,'r',encoding='utf-8') as f:
        lecteur=csv.reader(f,delimiter=',')
        for row in lecteur:
            tab.append(row)
    return tab		
		
Ce code permet, grâce au module csv, de placer les données du fichier countries.csv dans une structure de données python.
  1. Récupérer le fichier de données et le code ci-dessus et enregistrer le fichier .csv et le fichier .py dans le même répertoire.
  2. Utiliser la fonction index_tableau() pour récupérer les données.
  3. Afficher le tableau ainsi obtenu.
  4. import csv def index_tableau(nomDeFichier): tab=[] with open(nomDeFichier,'r',encoding='utf-8') as f: lecteur=csv.reader(f,delimiter=',') for row in lecteur: tab.append(row) return tab

SOLUTION


Les données ont donc été indexées. Nous avons maintenant accès à ces données grâce aux index du tableau.
  1. Afficher la 3eme ligne de données
  2. Afficher la 52eme ligne de données
  3. import csv def index_tableau(nomDeFichier): tab=[] with open(nomDeFichier,'r',encoding='utf-8') as f: lecteur=csv.reader(f,delimiter=',') for row in lecteur: tab.append(row) return tab

SOLUTION


On peut remarquer ici, qu'une fois indexées, les données perdent l'entête de la colonne et donc la signification de chaque champ de données.
La lisibilité et l'accès des données n'est donc pas aisé.
Il va falloir choisir une structure de données plus judicieuse.

Indexation sous forme de tableau de dictionnaires

Le dictionnaire est une structure de données plus adaptée pour réaliser l'indexation des données.
Le module csv de python permet également d'indexer les données sous forme de dictionnaire :

import csv

def index_dico(nomDeFichier):
    tab=[]
    with open(nomDeFichier,'r',encoding='utf-8') as f:
        lecteur=csv.DictReader(f,delimiter=',')
        for row in lecteur:
            tab.append(dict(row))
    return tab	
		
  1. Récupérer le fichier de données et le code ci-dessus et enregistrer le fichier csv et le fichier python dans le même répertoire.
  2. Utiliser la fonction index_dico() pour récupérer les données.
  3. Afficher les dictionnaires ainsi obtenus.
  4. Afficher la 3eme ligne de données
  5. Afficher la 52eme ligne de données
  6. import csv def index_dico(nomDeFichier): tab=[] with open(nomDeFichier,'r',encoding='utf-8') as f: lecteur=csv.DictReader(f,delimiter=',') for row in lecteur: tab.append(dict(row)) return tab

SOLUTION

L'indexation dans des dictionnaires a de nombreux avantages et pas seulement l'affichage des noms des champs à coté de chaque valeur :
  • Cela va simplifier la lisibilité des données grâce aux clef et aux valeurs.
  • Cela va simplifier et optimiser les recherches.
  • Cela va faciliter les liens entre les données de différentes tables.
  • Bref le dictionnaire est la structure adaptée pour le traitement des données en tables.