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 :
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.
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.
Utiliser la fonction index_tableau() pour récupérer les données.
Afficher le tableau ainsi obtenu.
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
Les données ont donc été indexées. Nous avons maintenant accès à ces données grâce aux index du tableau.
Afficher la 3eme ligne de données
Afficher la 52eme ligne de données
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
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
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.
Utiliser la fonction index_dico() pour récupérer les données.
Afficher les dictionnaires ainsi obtenus.
Afficher la 3eme ligne de données
Afficher la 52eme ligne de données
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