Bonjour à toutes et tous.
Voilà je débute en python et je me frotte à un problème avec un fichier csv. Mon problème vas sans doute vous paraître trivial mais je ne lui trouve pas de solution dans les doc.![]()
Pour l'exercice j'ai créer le fichier suivant cours.csv suivant :
A,B,C,D
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
je l'importe comme ceci :
je voudrais pouvoir pouvoir appliquer des formules au contenu de mes colonnes donc je redéfinit mes listes comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 import csv # on importe la bibliothèque csv f=open('cours.csv') # création de la variable lien vers notre fichier csv fichiercsv=csv.reader(f) # ouverture de la variable f dans l'instruction reader for ligne in fichiercsv: print(ligne) # pour chaque ligne appartennant au fichier csv, écrire le contenu de la ligne.
ce qui me donne ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 liste1 = [] #On définit des variables 'listes' vides. liste2 = [] liste3 = [] liste4 = [] for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' : a = ligne[0] # ligne indice [0] donc ligne ['A', 'B', 'C', 'D'] b = ligne[1] # ligne indice [1] donc ligne ['1', '2', '3', '4'] c = ligne[2] # // d = ligne[3] # // liste1.append(a) # on ajoute la variable 'a' à la 'liste1' liste2.append(b) # on ajoute la variable 'b' à la 'liste2' liste3.append(c) # // liste4.append(d) # // print(liste1) # on imprime les lignes précédement définies. print(liste2) print(liste3) print(liste4)
['A', '1', '5', '9', '13']
['B', '2', '6', '10', '14']
['C', '3', '7', '11', '15']
['D', '4', '8', '12', '16']
Le problème, c'est que mes valeurs numériques sont des chaines, je ne peu donc pas travailler avec. j'ai donc essayer faire passer mes mavleurs numériques en float comme ceci :
Mais la drame...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for ligne in fichiercsv: # pour chaque ligne appartenant à 'cours.csv' : a = float (ligne[0]) # ligne indice [0] donc ligne ['A', 'B', 'C', 'D'] b = float (ligne[1]) # ligne indice [1] donc ligne ['1', '2', '3', '4'] c = float(ligne[2]) # // d = float (ligne[3]) # //![]()
Les lettre ne passent pas en float ... Ce qui est logique.
Ma question est donc la suivante : comment faire pour garder les chaines de ma ligne[0] tout en passant les autres lignes 1,2 et 3 en float ?
Merci beaucoup pour votre aide.
( message sans doute un peu trop long mais je retranscrit ma réflexion complète pour être claire ^^ )
Partager