Importer des données d'un fichier CSV
Qu'est-ce qu'un fichier CSV ?
La plupart des logiciels de traitement de données (ex. tableur, Regressi, Latis, ...) offre la possibilité d'importer ou d'exporter des données dans un fichier texte au format CSV (Comma Separated Values) avec l'extension .csv ou .txt.
Le format CSV est un standard d'échange de données entre logiciels.
Note
L'édition d'un fichier texte (.txt ou .csv) se fait avec un éditeur de texte comme le logiciel Notepad++.
Pour illustrer la structure d'un fichier CSV, considérons les mesures de la caractéristique d'une résistance du tableau suivant.
Mesure |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|---|---|---|---|---|---|---|---|---|---|---|
I (mA) |
0 |
51 |
101 |
151 |
203 |
252 |
303 |
356 |
406 |
456 |
U (V) |
0 |
1,11 |
2,22 |
3,28 |
4,42 |
5,5 |
6,68 |
7,73 |
8,92 |
9,91 |
L'édition des données de ce tableau dans un fichier texte nommé data.txt donne le contenu ci-dessous.
data.txtI,U
0,0
51,1.11
101,2.22
151,3.28
203,4.42
252,5.50
303,6.68
356,7.73
406,8.92
456,9.91
Les données sont toujours rangées en colonne.
La première ligne renseigne sur les noms des variables.
Les colonnes sont séparées par une virgule.
Le séparateur décimal est un point (comme en Python).
Des variantes du format CSV admettent d'autres symboles pour le séparateur de colonnes et le séparateur décimal.
Type |
Séparateur de colonnes |
Séparateur décimal |
|---|---|---|
CSV (original) |
|
|
CSV (européen) |
|
|
Avertissement
Sachant que le langage Python impose le point comme séparateur décimal, le format CSV européen peut poser de problèmes de compatibilité.
Exportation en CSV de quelques logiciels
Regressi
Le logiciel Regressi propose une exportation des données en .txt ou .csv avec les règles suivantes :
Format |
Séparateur de colonnes |
Séparateur décimal |
|---|---|---|
Regressi (TXT) |
|
|
Regressi (CSV) |
|
|
data.txt avec de Regressi.I U
mA V
0 0
51 1.11
101 2.22
151 3.28
203 4.42
252 5.50
303 6.68
356 7.73
406 8.92
456 9.91
Le séparateur de colonnes est la tabulation
\t.Le séparateur décimal est le point
..Les deux premières lignes ne sont pas à prendre en compte (informations sur les données).
Latis Pro
Le logiciel Latis Pro supporte lui aussi les deux extensions .txt ou .csv pour l'exportation des données au format CSV.
Format |
Séparateur de colonnes |
Séparateur décimal |
|---|---|---|
Latis Pro (TXT) |
|
|
Latis Pro (CSV) |
|
|
data.txt avec Latis ProI;U
0;0
51;1.11
101;2.22
151;3.28
203;4.42
252;5.50
303;6.68
356;7.73
406;8.92
456;9.91
Le séparateur de colonnes est le point virgule
;.Le séparateur décimal est le point
..La première ligne n'est pas à prendre en compte (informations sur les données).
AviMéca 3
Quant au logiciel AviMéca 3, seule l'extension .txt est disponible avec plusieurs séparateurs de colonnes et uniquement la virgule comme séparateur décimal.
Format |
Séparateur de colonnes |
Séparateur décimal |
|---|---|---|
AviMéca (TXT) |
|
|
data.txt avec AviMécaPointages AviMéca
t x y
(s) (m) (m)
0,000 4,18E-1 7,54E-1
0,033 4,85E-1 8,88E-1
0,067 5,52E-1 9,85E-1
0,100 6,12E-1 1,09E+0
0,133 6,79E-1 1,19E+0
0,167 7,54E-1 1,27E+0
0,200 8,21E-1 1,35E+0
Le séparateur de colonnes est une tabulation
\t.Le séparateur décimal est la virgule
,.Les trois premières lignes ne sont pas à prendre en compte (informations sur les données).
Importation d'un fichier CSV avec le module csv
Le module csv est fourni par la librairie standard de Python.
Importation d'un fichier CSV avec le module numpy
Prenons l'exemple d'un fichier de données nommé data.txt dont le contenu est donné ci-dessous. Ce fichier texte est téléchargeable ici.
data.txtI;U
0;0
51;1.11
101;2.22
151;3.28
203;4.42
252;5.50
303;6.68
356;7.73
406;8.92
456;9.91
L'importation des données du fichier data.txt se fait assez simplement avec la fonction loadtxt() du paquet Numpy.
Avertissement
Le fichier data.txt doit-être placé dans le même répertoire que le programme Python.
import numpy as np
x, y = np.loadtxt('data.txt', delimiter=';', skiprows=1, unpack=True)
>>> %Run
>>> x
array([ 0., 51., 101., 151., 203., 252., 303., 356., 406., 456.])
>>> y
array([0. , 1.11, 2.22, 3.28, 4.42, 5.5 , 6.68, 7.73, 8.92, 9.91])
loadtxt()renvoie un tableau de tableaux (colonnes) Numpy.delimiter=';'signifie que le séparateur de colonnes est un point virgule.skiprows=1précise qu'il faut sauter la première ligne (pas de données).unpack=Truetranspose le tableau pour des données en colonne (en ligne par défaut).