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 :

Sauvegarde de data csv


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Sauvegarde de data csv
    Bonjour,
    je cherche à enregistrer dans un fichier des datas appartenant à différentes courbes.

    j'arrive à faire ce que je veux lorsque je considère 1 courbe via le code suivant:
    NB: ça écrit dans un csv toutes les valeurs contenues dans mes listes "self.x_save" et "self.y_save".
    Ces valeurs occupent autant de lignes du csv que de valeurs présentent dans chaque liste (et les valeurs x_save et y_save sont séparées par 1 "$").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fichier = open (self.ad_save,'w',newline='')
    ecriture=csv.writer(fichier,delimiter="$")
    ecriture.writerow(("Temps","Tension"))
     
    if self.nb_courbe==1:
         (self.x_save,self.y_save)=self.courbe1.getData()
         if len(self.x_save>2):
              for y in range(0,len(self.x_save),1):
                   ecriture.writerow((self.x_save[y],self.y_save[y]))
    Là où je commence à bloquer c'est que j'ai une dizaine de courbes qui peuvent être à enregistrer... et dont la taille (nombre de valeurs) ne sont pas forcément équivalent.
    j'aimerais éviter de faire autant de fichiers csv que de courbes... (j'aimerais pouvoir tous mettre dans 1 seul csv pour exploiter tout d'un coup dans 1 fichier).

    du coup, je ne sais pas comment structurer le code... boucler sur des listes de tailles variables pour coller les valeurs éventuellement vides dans un csv...
    je pense me lancer dans l'idée de prendre ma liste la plus grande et d'aligner toutes les autres sur cette même taille avec des champs vides (mais je trouve le code lourd... ou alors je ne m'y prends pas comme il faut).
    Globalement, j'aimerais avoir une sauvegarde qui structure les choses un peu comme ci dessous:

    valeur1$valeur2$valeur1a$valeur2a$valeur1b$valeur2b
    1$4$9$8$7$5
    4$5$8$7$1$3
    7$8$""$5$""$7
    4$5$""$7$""$6
    4$""$""$1$""$6
    ""$""$""$2$""$8

    avez vous des conseils?
    merci :-)

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Bonjour,

    Là où je commence à bloquer c'est que j'ai une dizaine de courbes qui peuvent être à enregistrer... et dont la taille (nombre de valeurs) ne sont pas forcément équivalent.
    Quel est le nombre de valeurs dans votre courbe exemple ? Ça sera cette valeur qu'il faudra transformer en une variable python, dans une fonction par exemple...

    Surtout, comment peut-on connaître cette information ? Par exemple pour votre courbe exemple, comment avez-vous su que cette valeur représentait sa taille ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    pour le nombre de valeurs, ça peut aller de quelques unités... à plusieurs dizaines de milliers....
    En fait, le nombre de valeurs dépend du temps et de la fréquence d'échantillonnage de chaque conditions de mesures (et qui sont propre à chaque courbe que je trace en temps réel avec un lancement/arrêt que je choisis en fonction de ce qui se passe sur chaque courbe).
    Lors d'un arret, je stock l'ensemble des valeurs dans des listes et je relance éventuellement une seconde mesure qui se surimpose (graphiquement) à la précédente.

    Alors un coup, j'ai une courbe longue... puis une courte... puis une longue... et je veux pouvoir tout enregistrer si c'est nécessaire.

    dans mon "exemple", je vérifie si ma courbe contient quelque chose (en vérifiant que sa longueur est >2 parce que mes listes abscisses/ordonnées sont récupérées via le getData() inhérent aux appels type "Addplot.plot()" de pyqtgraph... qui me renvoient deux array: 1 pour x et l'autre pour y.

    Ainsi, si ma courbe est vide j'ai un getData() qui me renvoie (None,None).... d'où le "2" de mon exemple.

    Actuellement, je n'arrive pas à "formuler" quelque choses de correcte vis à vis des éventuelles concaténations nécessaires à la transcription de chaque liste (vide ou non) dans un fichier CSV (que je n'arrive à remplir que ligne par ligne).
    Dernière modification par Invité ; 06/03/2019 à 14h06.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Ce code vient-il de toi ou est-ce du copié-collé ? Parce que si on peut faire pour une courbe, on peut faire pour plusieurs avec une boucle, non ?

    On peut aussi utiliser une fonction qui le fait pour une courbe, puis avec une boucle, exécuter la fonction sur n courbes. Je ne vois pas le problème, car tu sembles détecter la taille par len(self.x_save).

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est bien un code que j'ai bidouillé avec la doc! (c'est pas du copier coller).
    le problème, c'est pas vraiment la gestion des datas elles mêmes, j'arrive facilement à les affecter à des variables, à connaitre leurs tailles, à balayer tout ce qu'il faut, à les tracer en graphiques, à les effacer ou les surimposer sans problème.

    C'est juste la phase d'enregistrement/exportation (dans un csv) où je galère.
    en fait je n'arrive à gérer le csv qu'en lignes...

    exemple: j'ai 2 courbes que je veux enregistrer et qui sont déjà respectivement contenues dans les variables self.courbe1 et self.courbe2.
    je boucle sur self.boucle1 en fonction de sa taille et j'écris une nouvelle ligne dans le csv à chaque incrément d'index de liste.

    jusque là, ça marche nickel!!

    je prends maintenant mon self.courbe2.
    et là je sais pas comment m'y prendre... j'ai pas envie d'écrire directement à la suite des précédentes lignes parce que en traitement de donnée (plus tard sur excel), ça va être "chiant"...
    je préférerais concaténer le contenu des variables de chaque courbe à la suite de celles déjà écrites pour avoir toutes mes courbes cotes à cotes (lors du traitement excel ultérieur).

    Mais problème: comme mes courbes n'ont pas la même taille, il faut gérer les différences de taille pour ne pas transférer des données d'une courbe à l'autre au moment ou je vais "spliter" (sous excel) mes lignes avec le délimiter utilisé...
    expl:Si ma courbe 2 a plus de lignes que ma courbe 1, il faut que j'ajoute deux délimiter dès le début des lignes supérieurs aux lignes de la courbe1... sinon les valeurs seront interprété au moment du split comme appartenant à la courbe 1 (et j'ai tout qui se croise).

    Du coup c'est surtout sur l'écriture dans le CSV que je suis pas à l'aise pour boucler.
    Je n'arrive pas à construire un csv propre qui me générerais une vingtaine de colonne par un simple split sur excel.
    Dans mon fichier csv, c'est le traitement des futurs colonnes sans tout mélanger qui me bloque...

    je sais pas si j'ai été clair ... :-)
    mais merci de prendre du temps à réfléchir à mon souci !

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 : 4 062
    Par défaut
    Je vois pas la difficulté à faire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for courbe in self.courbes:
        taille = len(courbe)
        traiter(courbe, taille)
    ou self.courbes et l'ensemble des courbes existantes

    Désolé je ne vois pas la complexité... Je pense que c'est un problème algorithmique où tu te sens perdu. Mais si tu détermines la taille d'une courbe, tu peux le faire pour plusieurs.

Discussions similaires

  1. [E-03] Sauvegarder Xls en Csv
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/03/2009, 12h49
  2. Transformer data (encolonne) en data csv sur une ligne
    Par chordially dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/02/2009, 05h42
  3. Plus moyen de sauvegarder mes data dans tables
    Par melles dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/10/2008, 16h39
  4. Sauvegarde des data d'une table
    Par yanis97 dans le forum Oracle
    Réponses: 4
    Dernier message: 03/07/2007, 08h21
  5. Réponses: 2
    Dernier message: 14/05/2004, 12h55

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