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 :

Ouvrir un CSV


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut Ouvrir un CSV
    Bonjour à tous,

    Je m'autoforme à l'ouverture et aux traitement de fichier CSV sur python avec la librairie Panda. Je voudrais trouver un système où l'utilisateur entre lui-même le champ à traiter.
    Pour cela, j'ai vu qu'on pouvait entrer manuellement le nom du champ à traiter. J'aimerais pouvoir entrer simplement le numéro du champ à traiter. Effectivement, entrer un numéro de colonne me parait être bien plus facile qu'un nom de champ entier dans lequel il faut faire attention à chaque lettre utilisée, sans quoi ça ne marcherait pas.

    Voici mon programme de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data = pd.read_csv('etude.csv', delimiter=';').drop_duplicates().replace('.', ',', regex = True)
     
    choix_colonne = input("Entre le nom de la colonne à traiter : ")
     
    colonne_choix = data[choix_colonne ]
    Dans cet exemple, partons du principe que mon fichier csv soit de cette forme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    colonne_0;colonne_1;colonne_2;colonne_3
    47;12;23;2;
    45;23;98;5;
    12;1;101;6
    colonne_0 aurait donc le numéro 0, colonne_1 le numéro 1, etc. Entrer un numéro de colonne me parait être bien plus facile qu'un nom entier.

    En gros, ne plus lui demander le nom de la colonne à traiter, mais le numéro du champ.
    Malheureusement, je ne sais pas trop comment m'y prendre.

    Merci.

  2. #2
    Membre actif
    Homme Profil pro
    apprenti
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : apprenti
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Par défaut
    Citation Envoyé par preliator Voir le message
    En gros, ne plus lui demander le nom de la colonne à traiter, mais le numéro du champ.
    Malheureusement, je ne sais pas trop comment m'y prendre.
    Merci.
    Bonjour,
    Pas sur d'avoir très bien compris, mais n'est t'il pas possible, dans un premier temps, de lire la première ligne puis de faire une sorte de liste de tuple avec [(0 : "colonne1"),(1 :"colonneNom")....]
    Cela te permetra de pouvoir travailer avec tuple[0] qui vaut "colonne1" ... ?

    La synthaxe n'est pas bonne mais l'idée est la...

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut
    Merci pour ta réponse.
    Concrètement, au lieu de demander à l'utilisateur d'entrer le nom du champ en entier et avec la même syntaxe, je lui proposerais plutôt de lui faire entrer le numéro de champ de 1 à n.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    colonne_0;colonne_1;colonne_2;colonne_3
    47;12;23;2;
    45;23;98;5;
    12;1;101;6
    colonne_0 aurait donc le numéro 0, colonne_1 le numéro 1, etc. Entrer un numéro de colonne me parait être bien plus facile qu'un nom entier.

    Merci pour ta proposition, je regarderai ça

  4. #4
    Membre actif
    Homme Profil pro
    apprenti
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : apprenti
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Par défaut
    Okey, du coup ma solution peut surrement le faire (j'espère ).
    Et en plus si tu connais ton fichier csv et qu'il n'a pas a changer dans le future ( je parles surtout du nom de colonnes ) tu peux directement dans ton code remplir la liste, le tuple ou le dico ( selon ton bon vouloir ).
    Je viens de me dire qu'avec un liste se serait plus simple...
    Tu pourrais faire :
    listeColonne = ["colonneOui", "colonneNon", "colonne42".... ]

    Et pour parcourir ton csv t'auras juste à faire : csv_jeSaisPasQuoi.read(listeColonne[nbChoisieParLeUser]) et hop, ça fait des chocapics !

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 726
    Par défaut
    Salut,

    Pourquoi intituler votre sujet par "Ouvrir un CSV" alors que vous voulez savoir comment accéder aux colonnes d'un dataframe pandas via leur indice?

    Cela vous permettrait d'avoir des mots clefs "pandas dataframe column number" pour chercher un peu sur Internet et y trouver des solutions par vous même comme: data[ [choix_colonne] ] ou data[data.columns(choix_colonne)]...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre actif
    Homme Profil pro
    apprenti
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : apprenti
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Pourquoi intituler votre sujet par "Ouvrir un CSV" alors que vous voulez savoir comment accéder aux colonnes d'un dataframe pandas via leur indice?

    Cela vous permettrait d'avoir des mots clefs "pandas dataframe column number" pour chercher un peu sur Internet et y trouver des solutions par vous même comme: data[ [choix_colonne] ] ou data[data.columns(choix_colonne)]...

    - W
    Ha je me disais bien que ça existait, je ne connais pas du tout dataframe de panda donc je savais pas quoi chercher sur internet, j'ai essayé de donnée une solution B :p
    Merci W.

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut
    Un grand merci à vous tous pour vos réponses qui m'ont bien aidé . Voici la solution que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    data = pd.read_csv('etude.csv', delimiter=';').drop_duplicates().replace('.', ',', regex = True)
     
    choix = int(input("Nom colonne : "))
     
    colonne = data.iloc[:, [choix]]
     
    print(colonne)
    Effectivement, j'aurai à travailler plus tard sur la manipulation de fichier CSV comme créer des matrices avec ces données, ou alors les filtrer selon différentes catégories, faire aussi des test statistiques plus ou moins poussés sur des champs, etc. J'ai hésité entre Panda et Numpy. J'ai préféré Panda car il est supposé être plus facile à apprendre et équivalent à Numpy, d'après mes recherches sur internet.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 726
    Par défaut
    Citation Envoyé par preliator Voir le message
    J'ai préféré Panda car il est supposé être plus facile à apprendre et équivalent à Numpy, d'après mes recherches sur internet.
    Reste à apprendre...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2017, 20h07
  2. [Toutes versions] macro pour ouvrir un csv sans conversion numérique
    Par El_Nebu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2011, 14h03
  3. [AC-2003] Ouvrir fichier csv via Excel
    Par charliejo dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/04/2010, 12h17
  4. [XL-2007] ouvrir un csv
    Par samz25 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/01/2010, 14h49
  5. ouvrir un csv
    Par passe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2007, 08h24

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