Vous êtes sur la page 1sur 23

Traitement des données

en tables 1/3.

tableaux, formats et traitements en Python


Plan de la séance
● Tableaux (ou tables) de données
● Formats et interopérabilité
● Format(s) csv et autres formats
● Représentation de tables à l’aide de Python
● Python et csv
○ importation
○ exportation
Tableaux
Les données structurées sont présentées sous
forme de tableaux, aussi appelés tables.

Prénom Date Projet

Linus 1970 système d’exploitation

Ada 1842 premier programme

Alan 1942 casser les codes secrets


Tableaux: vocabulaire Attributs, ou descripteurs

Prénom Date Projet


Linus 1970 système d’exploitation
Un objet, ou
enregistrement Ada 1842 premier programme
Alan 1942 casser les codes secrets

Les valeurs de l’attribut “Date”


Plusieurs tables: une base de données

Destinations Clients
Séjours
Ville Durée Noms Téléphone
Ville Client
New-York 10 jours
Donald 06123
New-York Donald
Paris 1 semaine Jeanne 04567
Paris Joe
Londres 5 jours Joe 04566

Venise 3 jours Ali 06543

Petit exercice: donner les attributs de chaque table, et un


enregistrement pour chaque table.
Représentation et interopérabilité
Destinations

Ville Durée

Comment stocker cette donnée? New-York 10 jours

Paris 1 semaine
Comment la partager?
Londres 5 jours

Venise 3 jours
Interopérabilité et formats
1964: le terme “database” (base de données) est utilisé pour la
première fois par l’armée américaine qui rencontre des difficultés pour
partager efficacement un même contenu entre plusieurs utilisateurs....
1972: interopérabilité grâce au format CSV
1979: le premier tableur, Visicalc
Format CSV
Destinations Le fichier destinations.csv:
Ville Durée
Ville, Durée
New-York 10 jours
New-York, 10 jours
Paris 1 semaine Paris,1 semaine
Londres 5 jours Londres, 5 jours
Venise, 3 jours
Venise 3 jours

Comma Separated Values: Valeurs séparées par des virgules


Format CSV: séparateurs
Clients Le fichier clients.csv:
Nom, Age (ans)
Prénom Nom,Prénom ; Age(ans)
Durand, A. 35 Durand,A. ; 35
Fox, J. ; 28
Fox, J. 28

On peut choisir un autre séparateur que la virgule


(point-virgule, tiret, tabulation,...) mais il faut le préciser.
Autres formats(1): XML
<item>
<Nom>Durand</Nom>
Clients <Age>35</Age>
Le fichier </item>
Nom Age
clients.xml: <item>
Durand 35 <Nom> Fox</Nom>
<Age>28</Age>
Fox 28
</item>

Utilisé (entre autre) sur le web pour les flux RSS.


eXtensible Markup Language: langage à balises
extensible.
Autres formats(2): JSON
[
Clients
Le fichier {“Nom”:”Durand”, “Age”:35 } ,
Nom Age clients.json: {“Nom”:”Fox”, “Age”:28 }
]
Durand 35

Fox 28

Java Script Object Notation.


Alternative au XML.
Tables en Python: rappels sur les dictionnaires

>>>d = {“Nom”:”Durand”, “Age”:35 } La variable d est un


dictionnaire.
>>> d[“Nom”]
“Durand” Ses clés sont:
“Nom” et “Age”.
>>> d[“Age”] La valeur associée à
35 la clé “Nom” est
“Durand”.

Un dictionnaire s’appelle aussi parfois un p-uplet nommé.


Tables en Python
Clients
On peut représenter une table en
Nom Age Python par un tableau de
Durand 35 dictionnaires.
Fox 28
Chaque dictionnaire représente un
enregistrement de la table.

Clients=[{“Nom”:”Durand”, “Age”: 35 }, {“Nom”:”Fox”, “Age”: 28 }]


Python et CSV: importation
Le module csv permet d’importer un fichier csv sous la
forme d’un tableau de dictionnaires.
#on importe les fonctions du module csv
import csv
#on ouvre le fichier
fichier = open(“nomfichier.csv”)
# on récupère le tableau
table = list(csv.DictReader(fichier) )
# on ferme le fichier
fichier.close()
Python et CSV: importation

Nom, Age On obtient des dictionnaires


Durand, 35 ordonnés, qui sont un type
particulier de dictionnaire. On
Fox, 28
les manipule de la même façon!
....
>>> table
[ OrderedDict( [ (“Nom”, “Durand”) , (“Age”,”35”) ]) ,
OrderedDict( [ (“Nom”, “Durand”) , (“Age”,”35”) ]) ]
>>> table[0][“Nom”]
“Durand”
Python et CSV: un problème...
Nom,Prénom ; âge import csv
fichier = open(“test.csv”)
Durand,A. ; 35 table = list(csv.DictReader(fichier))
Fox, J. ; 28 fichier.close()

>>> table
[OrderedDict(
[('Nom', 'Durand'), ('Prénom ;âge', 'A. ; 35')]),
OrderedDict(
[('Nom', 'Fox'), ('Prénom ;âge', ' J. ; 28')])]
Python et CSV: importation et encodage
Attention sur certains OS,
Nom,Prénom ; âge l’encodage par défaut n’est pas
Durand,A. ; 35 UTF-U. Le préciser pour ne pas
Fox, J. ; 28 avoir “Prénom”...

import csv
fichier = open(“nomfichier.csv”,encoding = “utf-8”)
.....
Python et CSV: importation et encodage

Nom,Prénom ; âge
Durand,A. ; 35
Fox, J. ; 28

>>> table
[OrderedDict(
[('Nom', 'Durand'), ('Prénom ;âge', 'A. ; 35')]),
OrderedDict(
[('Nom', 'Fox'), ('Prénom ;âge', ' J. ; 28')])]
Python et CSV: importation et séparateurs

Nom,Prénom ; âge
Dans ce cas, il faut aussi préciser le
Durand,A. ; 35 séparateur:
Fox, J. ; 28

import csv
fichier = open(“nomfichier.csv”,encoding=”utf-8”)
table = list(csv.DictReader(fichier , delimiter=“;”))
Python et CSV: importation et séparateurs

Nom,Prénom ; âge ...on a bien le résultat voulu:


Durand,A. ; 35
Fox, J. ; 28

[OrderedDict(
[('Nom,Prénom ', 'Durand,A. '), ('âge', ' 35')]),
OrderedDict(
[('Nom,Prénom ', 'Fox, J. '), ('âge', ' 28')])]
Python et CSV: exportation
On a créé la table en Python:

menus = [
{ “Plat”: “Steak frites” , “Prix”:8 },
{ “Plat”: “Poisson riz” , “Prix”:12 } ]

et on veut l’exporter dans un fichier CSV Plat, Prix


correspondant, c’est à dire: Steak frites,8
Poisson riz, 12
Python et CSV: exportation
import csv
#on ouvre le fichier destination en écriture(w)
fichier = open(“nouveau.csv”,”w”)
# on crée un transcripteur en donnant l’ordre
des attributs
trans = csv.DictWriter(fichier, [“Plat”,”Prix”])
# on écrit la première ligne
trans.writeheader()
# on écrit les enregistrements, puis on ferme
trans.writerows(menus)
fichier.close()
Exercices
● Création de fichiers csv
● Créations de tables en python
● Calculs sur les tables: moyennes, tris, enregistrement qui
vérifient une condition
● Importation de fichier csv vers un tableau en python
● Exportation d’un tableau python vers n fichier csv

Voir la fiche d’exercices!

Vous aimerez peut-être aussi