logo

Introduction

Les fichiers CSV

On trouve énormément de données sur internet. Une partie de ces données sont publiques, par exemple le site data.gouv.fr regroupe un grand nombre de données publiques. Ces données sont librement réutilisables.

Afin de découvrir ce qu'est "l'open data", allez sur le site data.gouv.fr. En haut et à gauche de la page d'acceuil, cliquez sur "Découvrez L’OpenData".

Le format CSV est très courant sur internet. Voici ce que nous dit Wikipédia sur le format CSV :

Comma-separated values, connu sous le sigle CSV, est un format informatique ouvert représentant des données séparées par des virgules.

Un fichier CSV est un fichier texte, par opposition aux formats dits « binaires ». Chaque ligne du texte correspond à une ligne d'un tableau de donéées 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.

Voici un exemple du contenu d'un fichier CSV :

nom,prenom,date_naissance
Durand,Jean-Pierre,23/05/1985
Dupont,Christophe,15/12/1967
Terta,Henry,12/06/1978
		

Et le tableau correspondant :

nomprenomdate_naissance
DurandJean-Pierre23/05/1985
DupontChristophe15/12/1967
TertaHenry12/06/1978

Je pense qu'il est évident pour vous que nous avons ici 3 personnes :

"nom", "prenom" et "date_naissance" sont appelés des descripteurs.

Alors que, par exemple, "Durand", "Dupont" et "Terta" sont les valeurs du descripteur "nom".

ATTENTION :

La virgule est un standard pour les données anglo-saxonnes, mais pas pour les données aux normes françaises. En effet, en français, la virgule est le séparateur des chiffres décimaux. Il serait impossible de différencier les virgules des décimaux et les virgules de séparation des informations. C’est pourquoi on utilise un autre séparateur : le point-virgule (;). Dans certains cas cela peut engendrer quelques problèmes, vous devrez donc rester vigilants sur le type de séparateur utilisé.

Importer une table

La première étape dans le traitement des tables est naturellement l'importation de la table. Cette opération consiste à transformer le fichier csv ou txt en un tableau doublement indexé.

Ce tableau pourra prendre la forme d'une liste de tuples, une liste de listes ou encore une liste de dictionnaires.

Recherche dans les tables

Une des applications les plus importantes dans le traitement de données est la recherche. Ces recherches peuvent prendre plusieurs formes...

Trier les tables

Bien organiser sa table de données permet de s'y retrouver plus facilement. Pour cela il faudra trier des données numériques, mais aussi des chaines de caractères. On sera aussi amener à faire des tris différents selon les descripteurs et instaurer des priorités.

Pour comparer des chaînes, Python utilise l’ordre lexicographique qui est lui-même basé sur l’ordre des caractères. Il se trouve que chaque caractère unicode a un numéro d’ordre (une valeur unicode) et c’est ce numéro qui est utilisé pour classer les caractères. Par exemple, la lettre minuscule m a pour valeur unicode l’entier 109. Pour obtenir la valeur unicode d’un caractère, on utilise la fonction standard ord.

Trier en python

Fusion de 2 tables

Voici 2 fichiers clients.csv et commandes.csv :

id,nom,age,ville
3,Pierre,25,Ambérieu
7,Jean,18,Mulhouse
15,Yves,30,Metz
11,Victor,18,Cannes
12,Jean,17,Roubaix
date,id,commande
10/02/18,3,123
11/02718,11,146
01/02/19,7,408
08/07/19,15,756

On veut fusionner ces 2 fichiers en un seul avec les descripteurs : id,nom,age,ville,date,commande.

Un exemple

Voici le fichier csv qui a permis de réaliser la carte suivante.

CodeINSEE,CodePostal,Commune,Statut,AltitudeMoyenne,Superficie,Population
97128,97180,SAINTE-ANNE,Chef-lieu canton,50.0,8054.0,23.6
97129,97115,SAINTE-ROSE,Chef-lieu canton,186.0,12359.0,20.2
97102,97121,ANSE-BERTRAND,Chef-lieu canton,32.0,6408.0,4.6
97133,97141,VIEUX-FORT,Commune simple,209.0,733.0,1.8
97113,97190,LE GOSIER,Chef-lieu canton,46.0,4549.0,26.6
97104,97123,BAILLIF,Commune simple,442.0,2422.0,5.3
97106,97125,BOUILLANTE,Chef-lieu canton,330.0,4342.0,7.6
97114,97128,GOYAVE,Chef-lieu canton,252.0,5995.0,7.8
97109,97113,GOURBEYRE,Chef-lieu canton,378.0,2275.0,8.0
97108,97140,CAPESTERRE-DE-MARIE-GALANTE,Chef-lieu canton,119.0,4621.0,3.4
97125,97118,SAINT-FRANCOIS,Chef-lieu canton,31.0,6087.0,14.4
97117,97160,LE MOULE,Chef-lieu canton,33.0,8345.0,21.8
97126,97134,SAINT-LOUIS,Chef-lieu canton,69.0,5751.0,2.7
97124,97120,SAINT-CLAUDE,Chef-lieu canton,650.0,3432.0,10.6
97134,97119,VIEUX-HABITANTS,Chef-lieu canton,485.0,5953.0,7.7
97103,97122,BAIE-MAHAULT,Chef-lieu canton,18.0,4654.0,29.2
97116,97111,MORNE-A-L'EAU,Chef-lieu canton,19.0,6842.0,17.1
97122,97117,PORT-LOUIS,Commune simple,15.0,4438.0,5.4
97130,97136,TERRE-DE-BAS,Chef-lieu canton,98.0,678.0,1.1
97118,97170,PETIT-BOURG,Chef-lieu canton,288.0,13124.0,22.5
97112,97112,GRAND-BOURG,Chef-lieu canton,70.0,5575.0,5.6
97121,97116,POINTE-NOIRE,Chef-lieu canton,324.0,5950.0,7.1
97101,97139/97142,LES ABYMES,Chef-lieu canton,25.0,7002.0,58.8
97115,97129,LAMENTIN,Chef-lieu canton,136.0,6539.0,15.9
97132,97114,TROIS-RIVIERES,Chef-lieu canton,350.0,3120.0,8.8
97111,97126,DESHAIES,Commune simple,229.0,3136.0,4.4
97131,97137,TERRE-DE-HAUT,Commune simple,49.0,589.0,1.8
97105,97100,BASSE-TERRE,Préfecture de région,57.0,443.0,11.9
97120,97110,POINTE-A-PITRE,Sous-préfecture,3.0,273.0,17.0
97119,97131,PETIT-CANAL,Chef-lieu canton,29.0,7411.0,8.1
97110,97127,LA DESIRADE,Chef-lieu canton,106.0,2156.0,1.6
97107,97130,CAPESTERRE-BELLE-EAU,Chef-lieu canton,367.0,10289.0,19.1

Voici la carte dynamique utilisant les données :