====== Lire données ======
Dans [[bts:python:stocker_valeurs|Stocker un tableau de valeur dans un fichier]], on voit comment **stocker des valeurs** dans un fichier ''.csv''. Ici, on fait l'inverse : on lit les données stockées dans un fichier ''.csv'' venant d'ailleurs.
Par exemple le fichier ''.csv'' pourrait avoir été produit par un capteur (Arduino par exemple) ou avoir été récupéré sur internet.
On supposera ici que nous disposons d'un fichier ''data.csv'' contenant à chaque ligne une valeur ''x'' suivie d'une valeur ''y'' après une virgule.
Par exemple :
0.0,0.00012340980408667956
0.10101010101010101,0.00022393775270322926
0.20202020202020202,0.00039814633279967626
0.30303030303030304,0.0006935789052571739
0.40404040404040403,0.0011838230273274724
0.5050505050505051,0.001979773207804922
0.6060606060606061,0.003244007528924179
Vous pouvez télécharger {{ :bts:python:data.csv |}}.
{{page>bts:python:start#Préalable&noheader&inline}}
===== Ouverture du fichier =====
f = open('data.csv', 'r') # en mode lecture
contenu = f.readlines()
f.close()
===== Découpage =====
À l'issue de ces lignes, ''contenu'' est une liste donc chaque élément est un texte comme ''%%"0.20202020202020202,0.00039814633279967626"%%''.
Il faut couper ce texte au niveau du caractère '','' puis interprété chaque morceau comme un nombre à virgule.
f = open('data.csv', 'r') # en mode lecture
contenu = f.readlines()
f.close()
for ligne in contenu:
texte_x, texte_y = ligne.split(',') # découpe de la ligne
x = float(texte_x) # texte converti en nombre
y = float(texte_y) # idem
===== Stocker les x et y =====
Dans ce qui précède, on ne fait rien des ''x'' et ''y'' calculés. Il faut les stocker dans des tableaux ''liste_x'' et ''liste_y''.
Pour cela, on commence par créer des ''liste_x'' et ''liste_y'' vides, puis à chaque ligne, on ajoute le ''x'' calculé à ''liste_x'' et idem pour ''y''.
f = open('data.csv', 'r') # en mode lecture
contenu = f.readlines()
f.close()
liste_x = [] # liste initialisée vide
liste_y = []
for ligne in contenu:
texte_x, texte_y = ligne.split(',') # découpe de la ligne
x = float(texte_x) # texte converti en nombre
y = float(texte_y) # idem
liste_x.append(x) # ajout de x dans la liste correspondante
liste_y.append(y) # ajout de y dans la liste correspondante
===== Par exemple, tracer =====
On a deux listes, on veut tracer. On a déjà vu comment faire dans [[bts:python:tracer_courbe|Tracer une courbe]].
import matplotlib.pyplot as plt
f = open('data.csv', 'r') # en mode lecture
contenu = f.readlines()
f.close()
liste_x = [] # liste initialisée vide
liste_y = []
for ligne in contenu:
texte_x, texte_y = ligne.split(',') # découpe de la ligne
x = float(texte_x) # texte converti en nombre
y = float(texte_y) # idem
liste_x.append(x) # ajout de x dans la liste correspondante
liste_y.append(y) # ajout de y dans la liste correspondante
plt.plot(liste_x, liste_y)
plt.show()