Files
1ereNSI/données_en_table
2022-07-21 15:38:24 +02:00
..
2022-02-17 23:05:03 +01:00
2022-07-21 15:38:24 +02:00
2022-07-21 15:38:24 +02:00
2022-03-17 22:54:29 +01:00
2022-07-21 15:38:24 +02:00
2022-03-03 14:46:00 +01:00
2022-02-17 23:05:03 +01:00
2022-07-21 15:38:24 +02:00
2022-02-24 09:14:56 +01:00

Données en table & Fichiers CSV

Un chapitre Excel-lent !

meme

Le format CSV est fréquemment utilisé pour échanger des données traitées à l'aide de tableurs ou de logiciels de traitement de bases de données. Ici, notre objectif sera d'apprendre à importer et exporter des données dans Python à l'aide du format CSV.

En informatique, il est courant de traiter d'importantes quantités d'informations, c'est d'ailleurs le modèle économique de bon nombre de sites et services que vous utilisez quotidiennement : réseaux sociaux, magasins en ligne, cabinets d'analyses...

Contenu: Définition d'un fichier CSV, de données en table, recherche dans une table, fonction de tri
Compétences: Savoir exporter et importer des données dans un programme Python depuis un fichier CSV

Le programme


bo_1.png

Apport de connaissances

Les données en table sont une composante essentielle de l'informatique : de très nombreuses entreprises utilisent des tableurs afin de traiter un gros volume de données.

En maîtrisant cet aspect, nous pourrons commencer à utiliser de petites bases de données pour nos activités, mais également travailler sur des projets plus intéressants.


Enregistrements 

Un enregistrement est une structure de données (différentes ou non) auxquelles on accède grâce à un nom.

On peut donc représenter les notes d'une élève dans différentes disciplines à l'aide d'un enregistrement

{'Nom' : 'Jean-Yves', 'Anglais' : '17', 'NSI' : '18', 'Maths' : '16'}

À quelle structure de données python cela vous fait-il penser ?

Les clés sont parfois appelées champs ou attributs quand on parle de base de données


Fichiers CSV

Le format CSV (Comma Separated Value) est employé poour importer / exporter des données depuis ou vers un tableur.

C'est une sorte de fichier texte dans lequel chaque ligne correspond à une ligne du tableau.

Comme son nom l'indique, on sépare les colonnes (et donc les valeurs) par une virgule, ou par un point-virgule.

Il permet donc de représenter une liste d'enregistrement ayant les même champs.

→ Exemple de feuille de calcul

Prénom DS1 DS2 Projet
Michelangelo 12 14 B
Leonardo 15 16 A
Raphael 10 12 C
Donatello 13 15 B

On peut donc représenter ce tableau sous forme d'un fichier "notes.csv" :

Prenom; DS1; DS2; Projet
Michelangelo; 12; 14; B
Leonardo; 15; 16; A
Raphael; 10; 12; C
Donatello; 13; 15; B

Chaque ligne est un enregistrement. La première ligne définit les attributs de chaque enregistrement.


Implémentation en Python

On peut choisir de représenter en Python les fichiers CSV par des listes de dictionnaires dont les clés sont les noms des colonnes.

Par exemple, avec le tableau du dessus, cela donne :

Notes = [{'Prénom' : 'Michelangelo', 'DS1' : '12', 'DS2' : '14', 'Projet' : 'B'},
{'Prénom' : 'Leonardo', 'DS1' : '15', 'DS2' : '16', 'Projet' : 'A'},
{'Prénom' : 'Raphael', 'DS1' : '10', 'DS2' : '12', 'Projet' : 'C'},
{'Prénom' : 'Donatello', 'DS1' : '13', 'DS2' : '15', 'Projet' : 'B'}]

On peut utiliser le vocabulaire décrivant une feuille de calcul de tableau :

  • Une table est une liste de dictionnaire, ici Notes
  • Chaque ligne est un dictionnaire et correspond à un enregistrement, par exemple Notes[0]
  • Chaque cellule contient la valeur d'une clé du dictionnaire, par exemple Notes[0] ['DS2']

Import d'un fichier CSV

Il existe un module Python nommé CSV qui permet de manipuler ces fichiers.

On va donc créer une liste de dictionnaires, soit un par ligne de la table.

import csv

def import_csv(fichier):
  lecteur = csv.DictReader(open(fichier + '.csv', 'r'))
  return [dict(ligne) for ligne in lecteur ]

Ce qui nous donne :

[{'Prénom' : 'Michelangelo', 'DS1' : '12', 'DS2' : '14', 'Projet' : 'B'},
{'Prénom' : 'Leonardo', 'DS1' : '15', 'DS2' : '16', 'Projet' : 'A'},
{'Prénom' : 'Raphael', 'DS1' : '10', 'DS2' : '12', 'Projet' : 'C'},
{'Prénom' : 'Donatello', 'DS1' : '13', 'DS2' : '15', 'Projet' : 'B'}]

On peut également manipuler les fichiers afin de lire puis de le transformer en tableau :

import csv
def import_csv2():
  resultat = []
  with open('notes.csv',newline = '') as csvfile:
    s = csv.reader(csvfile,delimiter = ';')
    for i in s:
      resultat.append(i)
  return resultat 

On obtient donc ici la liste suivante :

resultat = [['Prenom', 'DS1', 'DS2', 'Projet'], ['Michelangelo', '12', '14', 'B'],
           ['Leonardo', '15','16', 'A'], ['Raphael', '10', '12', 'C'], ['Donatello' '13', '15', 'B']]

Export d'un fichier CSV

Pour exporter une table vers un fichier CSV - comprendre, créer un fichier csv depuis une table python - on va entrer le nom de la table sous forme de chaine de caracteres. On donnera l'ordre des colonnes sous forme de liste d'attributs.

def vers_csv(nom, ordre):
  with open(nom + '.csv', 'w') as fic:
    dic = csv.DictWriter(fic, fieldnames = ordre)
    table = eval(nom)
    dic.writeheader() # première ligne, celle des attributs
    for ligne in table:
      dic.writelow(ligne) # ajoute les lignes de la table
  return None

Auteur : Florian Mathieu

Licence CC BY NC

Licence Creative Commons
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.