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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut Séparer des données selon \t et les placer dans des listes ou dictionnaires différents nommés absisses ou ordo
    Bonjour, j'ai un problème sur mon programme python quelqu'un pourrais il m'aiguiller?
    Mon programme est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Lecture du fichier, prise des données et pises en forme de liste
    file=open('cinetique123.txt', "r")
    lines=file.readlines()
    file.close()
    print(lines)
    J'obtiens donc une liste comme suit ['0\t0.00549390\n', '2\t0.00548760\n', '4\t0.00548304\n', '6\t0.00547781\n', '8\t0.00547310\n', '10\t0.00546792\n', '12\t0.00546399\n',
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # permet de supprimer /n
    with open("cinetique123.txt", "r") as fd:
        lines = fd.read().splitlines()
    print(lines)
    ici j'obtiens ça ['0\t0.00549390', '2\t0.00548760', '4\t0.00548304', '6\t0.00547781', '8\t0.00547310', '10\t0.00546792', '12\t0.00546399', '14\t0.00545799', '16\t0.00545389', '18\t0.00544702'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #Séparation des données autour de \t
     
    absisses = []
    ordonnees = []
    for line in lines:
        print(line[1].split("\t"))
        absisses.append(line[1].split("\t"))
        ordonnees.append(line[2])
    print(absisses)
    print(ordonnees)
    Malheureusement ce code me fournit n'importe de quoi et je ne comprends pas d'où viens mon erreur...
    Merci d'avance pour vos conseils

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Le split est à fait sur line et non line[1]

    La fonction split modifie la variable sur laquelle elle est appelée, il ne faut donc pas le faire deux fois (ton print, puis la ligne du dessous...).

    A mon avis tu as oublié qu'un tableau commence à l'index 0 et non 1, tes index du tableau line sont donc 0 et 1 au lieu de 1 et 2.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    absisses = []
    ordonnees = []
    for line in lines:
        print(line.split("\t"))
        absisses = (line[0])
        ordonnees = (line[1])
    print(absisses)
    print(ordonnees)
    C'est niquel j'ai réussi à séparer les données avec for line in lines: print(line.split("\t")) et j'obtiens des listes comme suit ['temps','concentration'] Cependant maintenant je n'arrive pas à definir les absisses ou les ordonnées

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Par défaut
    J'ai réussi à trouver !! Merci pour votre aide

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Sinon avec la librairie numpy, en 1 ligne c'est fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import numpy as np
     
    absisses, ordonnees = np.loadtxt("cinetique123.txt").T

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    @lg_53 > Pourquoi charger une librairie qui fait de l'ordre de 30mio alors qu'on peut le faire avec quelques lignes de la librairie de base du langage ?
    Si on n'utilise pas la librairie numpy pour autre chose c'est un peu utiliser un bazooka pour pouvoir dire "j'écris peu de code".

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par transgohan Voir le message
    @lg_53 > Pourquoi charger une librairie qui fait de l'ordre de 30mio alors qu'on peut le faire avec quelques lignes de la librairie de base du langage ?
    Si on n'utilise pas la librairie numpy pour autre chose c'est un peu utiliser un bazooka pour pouvoir dire "j'écris peu de code".
    Parce que numpy va etre plus rapide, surtout si le jeu de données est grand. Parce que numpy va permettre ensuite des opérations vectorielle (imaginons qu'il veuille calculer une approximation de la dérivée en faisant (ordonnées[i+1]-ordonnées[i])/(abscisses[i+1]-abscisses[i]), là on peut se passer de la boucle). Et je pourrais en énumérer d'autres.

    Après je ne dis pas qu'il faut absolument utilisé numpy. Mais il a tout de même des intérêts non négligeables, malgré qu'il soit lourd. Je mentionne donc son existence, qui offre une alternative qui pourrait intéressé l'auteur du topic, selon ce dont il a envie de faire avec ces données après.

  8. #8
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    du coup une alternative sans utiliser numpy :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open('cinetique123.txt', 'r') as f:
        abcisses, ordonnées = zip(*[(l.split()) for l in f])

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Lire un fichier CSV est une activité qu'on répète souvent.

    Et comme toutes les activités répétitives, on est toujours en balance entre apprendre à utiliser une bibliothèque qui le fait et coder un peu.

    Apprendre, c'est arrêter de réfléchir à ce qu'on est en train de faire, coder un peu, c'est se donner les moyens d'avancer sans trop perdre le fil.

    Sûr que si on connaît pandas, numpy, ou le module CSV de la bibliothèque standard, on va partir à utiliser çà... pas parce que c'est "luxe" juste qu'on ne veut pas plus perdre le fil de ce qu'on est en train de faire et, au plus vite on franchit l'étape de fabrication d'un tableau à partir d'un CSV, au plus vite on pourra s'occuper de choses sérieuses (les traitements des données de ce foutu tableau).

    Tant qu'on développe une application pour répondre à un besoin ponctuel, on peut l'écrire au bazooka si cela nous permet d'obtenir plus vite un résultat.

    Là où çà craint, c'est lorsqu'on diffuse ces "brouillons" pour que d'autres puissent en profiter aussi. Tout est question de contexte.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/04/2011, 10h44
  2. [MySQL] Récupérer des données mysql et les placer dans un tableau.
    Par argon dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/05/2009, 10h00
  3. [MySQL] Récupérer des données de MySQL et les envoyer dans un PDF
    Par cdevl32 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 16/03/2009, 21h53
  4. récupérer des informations d'une feuille et les placer dans une autre
    Par winclass dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2008, 22h34
  5. Réponses: 2
    Dernier message: 21/05/2006, 15h02

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