Lecture d'un fichier au format csv
Exemple :
Dans cet exemple, nous allons lire le fichier csv créé dans l'exemple précédent.
Le fichier csv est composé de 3 colonnes (nommées« x »
, « carrés de x »
et « plus grand que 10 »
).
Le module csv est chargé puis le fichier est ouvert en lecture en utilisant la fonction open. Les paramètres de open sont le nom du fichier avec son extension csv, le paramètre 'r' pour indiquer que le fichier est ouvert en lecture. Le paramètre nommé newline[1] est mis à la valeur'' afin de laisser les fins de lignes telles quelles.
import csv
with open('mon_fichier.csv','r', newline='', encoding='utf-8') as fichier:
Le fichier est maintenant ouvert. La méthode la fonction csv.DictReader associe les données au fichier csv (variable tableur), en précisant que le séparateur de colonne sera le symbole virgule. La première ligne est utilisée pour nommer les colonnes (champ du dictionnaire). Chaque ligne est un dictionnaire.
tableur = csv.DictReader(fichier)
Les lignes peuvent être affichées en parcourant
for ligne in tableur:
print(ligne)
Le fichier est fermé automatiquement puisque la structure utilisée pour ouvrir le fichier est un gestionnaire de contexte (with).
Exemple :
Cet exemple reprend le principe de lecture d'un fichier csv et ajoute la lecture colonne par colonne.
Chaque colonne d'une ligne est mis dans une variable de type list. L'accès à une colonne de la ligne se fait en utilisant l'indexation du dictionnaire. L'accès à la colonne 'x' s'écrit :
ligne['x']
Pour la colonne 'carré de x', il y a une complication due à la présence d'un caractère accentué. Tout doit être codé en UTF-8. Si vous n'êtes pas habitué à l'utf-8 et au type de codage des fichiers, évitez d'utiliser des caractères accentués dans les noms de colonnes, surtout quand vous débutez en programmation python.
import csv
with open('mon_fichier.csv','r', encoding='utf-8') as fichier:
tableur = csv.DictReader(fichier)
tableau =[]
for ligne in tableur:
tableau.append([ligne['x'], ligne['carr\xe9 de x'], ligne['Plus grand que 10']])
for ligne in tableau:
print(ligne)
Complément : Tracer d'une courbe
On reprend le programme précédent en convertissant les données des colonnes en float
(nombre à virgule). La colonne 'Plus grand que 10' n'est pas utilisée car elle n'est pas numérique. Pour tracer une courbe, il faut une variable de type np.array
. dans ce programme, c'est la variable x créée à partir de la variable tableau (np.array(tableau)
)
import csv
import numpy as np
from matplotlib import pyplot as plt
with open('/tmp/mon_fichier.csv', 'r', encoding='utf-8') as fichier:
tableur = csv.DictReader(fichier)
tableau =[]
for ligne in tableur:
tableau.append([float(ligne['x']), float(ligne['carré de x'])])
for ligne in tableau:
print(ligne)
fig, ax = plt.subplots(nrows=1, ncols=1)
ax.set_title('Graphe du fichier mon_fichier.csv')
x = np.array(tableau)
ax.plot(x[:,0], x[:,1], color='r')
ax.set_xlabel(tableur.fieldnames[0])
ax.set_ylabel(tableur.fieldnames[1])
plt.show()