CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python et les fichiers csv.

ViIIeurbannais
ViIIeurbannais
Niveau 54
11 novembre 2016 à 15:44:40

Bonjour à toutes et à tous,
Voila, je n'arrive pas à créer proprement un fichier.csv depuis python voici mon code:

f2 = open("test.csv", "w")
c = csv.writer(f2)
c.writerow(['Col1\t', 'Col2\t', 'Col3'])
f2.close()

Bon les "\t" sont inutiles c'était juste pour tester, ce code me crée bien un fichier.csv mais me met Col1, Col2, Col3 dans la colonne A du tableur Excel, j'aimerais qu'il me mette Col1 dans A1, Col2 dans A2 ect, mais je vois pas trop comment faire, avez vous une idée svp ?
Autre question, j'ai cette fois ci un fichier.csv rempli comme il faut et je ne sais pas comment "indicer" les valeurs contenues dans le tableau: (mis au format .txt pour avoir le code):

Col1;Col2;Col3
L1;20;2
L2;10;25

Voici mon code python:

f1 = open("fichier.csv","r")
import csv
lecteur = csv.reader(f1,delimiter=";")

for ligne in lecteur:
    print(ligne)
    
f1.close()

Python m'affiche correctement le tableau pas de problème, mais du coup je sais pas comment faire pour faire la moyenne la ligne 1 et de la ligne 2, comme indicer le lecteur, genre lecteur[2][2] = 20.
Merci d'avance, toute aide sera la bienvenue.

ViIIeurbannais
ViIIeurbannais
Niveau 54
11 novembre 2016 à 18:24:53

J'ai écrit Col1 dans A1, Col2 dans A2 dsl pour l'erreur c'est bien Col1 dans A1, Col2 dans B1.

MrGreez94
MrGreez94
Niveau 10
11 novembre 2016 à 19:42:07

Alors avant toute chose, il y a des petites remarques à faire sur ton code.

:d) Toujours mettre les import en début de code, avant de faire quoi que ce soit, ça évite des problèmes et ça rend ton code plus lisible.

Cela donne déjà :

import csv

f1 = open("fichier.csv","r")
lecteur = csv.reader(f1,delimiter=";")
f1.close()

for ligne in lecteur:
    print(ligne)

Ensuite, a moins que les entêtes de colonnes/lignes que tu souhaites définir aient vraiment un sens particulier, il est préférable de les omettre pour te simplifier le travail. Pars plutôt (si possible) sur quelque chose comme :

20;2
10;25

Ensuite, il faut d'abord convertir la ligne, une liste de chaînes de caractères, en liste d'entiers, puis faire la moyenne de cette liste.

import csv
from numpy import mean

f1 = open("fichier.csv","r")
lecteur = csv.reader(f1,delimiter=";")

for ligne in lecteur:
	ligne = list(map(int, ligne))
	print(mean(ligne))

f1.close()

Si tu es contraint de travailler avec ces entêtes de lignes/colonnes, il te suffit de balayer toutes les lignes sauf la première, et pour chaque ligne ignorer le premier élément de la liste.

ViIIeurbannais
ViIIeurbannais
Niveau 54
11 novembre 2016 à 20:17:14

Bonsoir, merci pour ta réponse,

Si tu es contraint de travailler avec ces entêtes de lignes/colonnes, il te suffit de balayer toutes les lignes sauf la première, et pour chaque ligne ignorer le premier élément de la liste.

C'est exactement ça, mais comment supprimer depuis python la première ligne et colonne ?

Message édité le 11 novembre 2016 à 20:17:45 par ViIIeurbannais
MrGreez94
MrGreez94
Niveau 10
11 novembre 2016 à 21:04:37

Dans ce cas là je te propose une autre approche, sans la librairie csv.

from numpy import mean

f1 = open("fichier.csv","r")
lignes = f1.readlines()

# lignes = ['Col1;Col2;Col3\n', 'L1;20;2\n', 'L2;10;25']

for ligne in lignes[1:]:  #Itération sur toutes les lignes sauf la première
	ligne = ligne.split(';')[1:] #Exclusion du premier élément de la ligne
	ligne = list(map(int, ligne))
	print(mean(ligne))

f1.close()

J'ai commenté les points qui varient par rapport à l'exemple précédent, n'hésite pas à demander si un passage te paraît flou :-)))

Message édité le 11 novembre 2016 à 21:06:07 par MrGreez94
ViIIeurbannais
ViIIeurbannais
Niveau 54
11 novembre 2016 à 21:15:26

Le 11 novembre 2016 à 21:04:37 MrGreez94 a écrit :
Dans ce cas là je te propose une autre approche, sans la librairie csv.

from numpy import mean

f1 = open("fichier.csv","r")
lignes = f1.readlines()

# lignes = ['Col1;Col2;Col3\n', 'L1;20;2\n', 'L2;10;25']

for ligne in lignes[1:]:  #Itération sur toutes les lignes sauf la première
	ligne = ligne.split(';')[1:] #Exclusion du premier élément de la ligne
	ligne = list(map(int, ligne))
	print(mean(ligne))

f1.close()

J'ai commenté les points qui varient par rapport à l'exemple précédent, n'hésite pas à demander si un passage te paraît flou :-)))

Bon ben c'est exactement ce que je voulais [[sticker:p/1nua]], merci infiniment :-)))

MrGreez94
MrGreez94
Niveau 10
11 novembre 2016 à 22:25:13

Content d'avoir pu t'aider :-)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment