IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Extraction colonnes fichier csv


Sujet :

Python

  1. #1
    Candidat au Club
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Extraction colonnes fichier csv
    Salut,

    Je débute en Python et je cherche à extraire certaines colonnes d'un fichier csv.
    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Que n'as-tu pas compris dans la documentation du module csv ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Candidat au Club
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai bien vu la fonction writerow mais elle sert à écrire des lignes et non des colonnes, c'est bien ça ?

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Quand on lit un fichier csv avec le module csv, on récupère une "liste de listes" dans laquelle chaque sous-liste est une ligne avec tous les champs (les colonnes) séparées par une virgule. Il est alors facile d'en extraire une des colonnes.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malistecsv = [["col00", "col01", "col02", "col03", "col04"], ["col10", "col11", "col12", "col13", "col14"], ["col20", "col21", "col22", "col23", "col24"]]
    Extraction de la 3ème colonne (indice 2):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print([ligne[2] for ligne in malistecsv])
    ['col02', 'col12', 'col22']
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Candidat au Club
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je suis sûre d'avoir tout compris à la réponse que tu as écrite

    Je vais être plus précise. J'ai un fichier avec 2 colonnes Time et Values pour simplifier et je ne veux qu'écrire que la première colonne Time dans mon fichier de sortie. J'ai tenté de coder ça de cette façon, mais mon fichier de sortie est toujours vide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fieldnames = ['Time', 'Value']
     
    my_writer = csv.DictWriter(out_file, delimiter = ',', fieldnames = fieldnames)
    my_reader = csv.DictReader(zephir_file, delimiter = ',')
     
    for i in my_reader:
        if i == 0:
            my_writer.writerow(i)
    Une idée de comment améliorer mon code ?

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Quand un truc ne marche pas, il est souvent intéressant de créer un exemple complet en dehors du programme lui-même sur lequel on peut tester des solutions.

    Prenons un fichier csv appelé table01.csv qui contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "titre1";"titre2";"titre3";"titre4";"titre5"
    "col00";"col01";"col02";"col03";"col04"
    "col10";"col11";"col12";"col13";"col14"
    "col20";"col21";"col22";"col23";"col24"
    Tu as utilisé dans ton code les méthodes DictReader et DictWriter qui passent par l'intermédiaire d'un dictionnaire, mais je n'en vois pas l'intérêt: ça ajoute, à mon avis, une complexité inutile.

    Voilà ce que je propose (Python 3):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import csv
     
    with open("table01.csv", "r") as fsrce:
        with open("table02.csv", "w", newline='') as fdest:
            my_reader = csv.reader(fsrce, delimiter = ';')
            my_writer = csv.writer(fdest, delimiter = ';')
            for ligne in my_reader: # ligne est une liste de valeurs de colonnes
                my_writer.writerow([ligne[0]]) # ligne[0] est la valeur de la 1ère colonne de la ligne considéré
    Cela donne un fichier table02.csv qui contient maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    titre1
    col00
    col10
    col20
    Est-ce le résultat attendu?

    Si c'est le cas, on peut simplifier: utiliser simplement fdest.write() au lieu de my_writer.writerow(). Cela donnerait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import csv
     
    with open("table01.csv", "r") as fsrce:
        with open("table02.csv", "w") as fdest:
            my_reader = csv.reader(fsrce, delimiter = ';')
            for ligne in my_reader:
                fdest.write(ligne[0] + '\n')
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Candidat au Club
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup c'est exactement le résultat attendu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Macro conversion colonne fichier CSV
    Par novice06 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/10/2012, 21h34
  2. extraction sur fichier csv
    Par pat56350 dans le forum Débuter
    Réponses: 3
    Dernier message: 07/09/2012, 14h47
  3. extraction de fichiers csv
    Par jongamers dans le forum Pentaho
    Réponses: 1
    Dernier message: 15/10/2010, 00h31
  4. pb dans l'extraction de fichier csv
    Par ricachu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/08/2006, 11h28
  5. [débutant] nombre de colonne dan sun fichier csv
    Par mandagor dans le forum C++
    Réponses: 18
    Dernier message: 15/06/2005, 15h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo