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.

1
import csv
2
3
with open('mon_fichier.csv','r', newline='', encoding='utf-8') as fichier:
4
5

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.

1
    tableur = csv.DictReader(fichier)
2

Les lignes peuvent être affichées en parcourant

1
    for ligne in tableur:
2
        print(ligne)
3
4

Le programme affiche pour chaque ligne le nom de la colonne et la donnée de cette colonne. Le nom et la donnée sont de type str.

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 :

1
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.

1
import csv
2
3
with open('mon_fichier.csv','r', encoding='utf-8') as fichier:
4
    tableur = csv.DictReader(fichier)
5
    tableau =[]
6
    for ligne in tableur:
7
        tableau.append([ligne['x'], ligne['carr\xe9 de x'], ligne['Plus grand que 10']])
8
    for ligne in tableau:
9
        print(ligne)
10

ComplémentTracer 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))

1
import csv
2
import numpy as np
3
from matplotlib import pyplot as plt
4
5
6
with open('/tmp/mon_fichier.csv', 'r', encoding='utf-8') as fichier:
7
    tableur = csv.DictReader(fichier)
8
    tableau =[]
9
    for ligne in tableur:
10
        tableau.append([float(ligne['x']), float(ligne['carré de x'])])
11
    for ligne in tableau:
12
        print(ligne)
13
    fig, ax = plt.subplots(nrows=1, ncols=1)
14
    ax.set_title('Graphe du fichier mon_fichier.csv')
15
    x = np.array(tableau)
16
    ax.plot(x[:,0], x[:,1], color='r')
17
    
18
    ax.set_xlabel(tableur.fieldnames[0])
19
    ax.set_ylabel(tableur.fieldnames[1])
20
    plt.show()