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

GUI Python Discussion :

[Python 3.x] Tableaux et graphiques: Quelles sont les meilleures solutions ?


Sujet :

GUI Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut [Python 3.x] Tableaux et graphiques: Quelles sont les meilleures solutions ?
    Bonjour,

    Dans le cadre d'un projet je dois effectuer des mesures à l'aide de scripts Python, récupérer les valeurs de ces mesures, et les répartir dans un tableau ainsi qu'un graphe. Les valeurs doivent être sauvegardées à chaque utilisation. Ce projet sera concrétiser par une interface graphique faite à l'aide de Pyside. C'est quelque chose de relativement basique à faire. Schématiquement ça donnerait ça:
    Relevé mesures (Python) --> Enregistrement dans tableau (Excel/CSV) --> Modélisation d'un graphe (Excel/Matplotlib/Autre...) --> Affichage du graphe (Pyside).

    J'ai à ma connaissances plusieurs façons de faire, et j'aurais aimé recueillir vos avis quand à la plus facile d'utilisation.

    J'ai pensé à 3 solutions:

    • Enregistrer les nouvelles valeurs dans un fichier Excel, générer automatiquement le graphique Excel correspondant, et l'afficher avec Pyside. (Je ne pense pas que l'on puisse générer le graphique Excel à partir de Python, et que l'on puisse afficher un graphique Excel via Pyside; il me reste des recherches à faire à ce niveau là).


    • Enregistrer les nouvelles valeurs dans un fichier CSV, et en afficher le graphique via Excel ou un autre outil (Je n'ai pour le moment pas trouvé d'outil me permettant d’interagir avec Python... A noter que je suis contraint d'utiliser Python 3.1...)


    • Enregistrer les valeurs dans un fichier Excel ou CSV, et afficher un graphique directement via matplotlib (qui me parait être le meilleur package concernant la construction de graphe avec Python).


    J'ai également eu vent du package Pandas, mais je n'ai pas retenu cette solution pour le moment. A tort ?

    Voilà les 3 principales solutions auxquelles je pense, je suis ouvert à d'autres suggestions auxquelles je n'aurai pas pensé. Je cherche une solution assez simple, et stable.

    J'espère avoir été suffisamment clair, merci pour vos réponses.

    Poalcospe

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Citation Envoyé par poalcospe Voir le message
    A noter que je suis contraint d'utiliser Python 3.1
    Hmm ça risque de poser quelques problèmes effectivement. Toutes les bibliothèques n'ont pas été portées de 2.7 à 3.1.

    Commencer par faire l'état des lieux des technos disponibles c'est une très bonne chose. A mon avis le choix devrait s'orienter vers du tout python (pas d'Excel). L'interface entre les deux est tout à fait faisable, mais c'est ce compliquer la vie pour pas grand chose. Si on reprend le schéma de fonctionnement du programme:
    1. Relevé mesures (Python): Quelques questions, sous quelle forme et à quelle fréquence ces mesures sont-elles faites? La forme des mesures?
    2. Enregistrement dans tableau: Ici la solution va dépendre à la fois de la version de python (dispo modules) et du point précédent. On peut envisager une base de donnée, un fichier csv que l'on ouvre et ajoute une donnée à chaque mesures (si ce n'est pas trop fréquent), ou garder en mémoire si l'acquisition se fait en une seule fois (du genre récupérer toutes les données à la fois depuis une source).
    3. Modélisation d'un graphe: Matplotlib sans hésiter.
    4. Affichage du graphe (Pyside): Je n'ai jamais réalisé d'interface en Qt pour le moment. En plus de Pyside il y a pyqt4 (m'étonnerais que pyqt5 soit compatible avec python 3.1), mais il y a aussi tkinter (assez bas niveau, mais de base avec python) ou encore wxpython (plus d'abstraction que tkinter et plus joli car s'adapte à l'interface du système d'exploitation).


    Voilà ma petite pierre à l'édifice.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Salut,

    Citation Envoyé par Julien N Voir le message
    A mon avis le choix devrait s'orienter vers du tout python (pas d'Excel).
    J'ai justement trouvé un module "XlsxWriter" (http://xlsxwriter.readthedocs.org/index.html) qui permet d'utiliser Excel et ses fonctionnalités graphiques de manière assez simple. Connaissais-tu ce module ?

    Citation Envoyé par Julien N Voir le message
    sous quelle forme et à quelle fréquence ces mesures sont-elles faites? La forme des mesures?
    Les mesures seront faites environ 1 à 2 fois par semaine. Il s'agit de mesurer le temps de lecture d'une carte à puce régulièrement afin d'observer d'éventuels impacts dus aux mises à jours qui seront effectuées. Mon script Python fait en réalité 3 mesures successives et ne sauvegardera que la moyenne de ces 3 mesures.

    Citation Envoyé par Julien N Voir le message
    un fichier csv que l'on ouvre et ajoute une donnée à chaque mesures
    C'est effectivement ce à quoi je pensais

    Citation Envoyé par Julien N Voir le message
    ou garder en mémoire si l'acquisition se fait en une seule fois (du genre récupérer toutes les données à la fois depuis une source).
    Je ne suis pas sur de comprendre; cette méthode s'appliquerait dans le cas où j'aurais besoin d'un enregistrement différent par mesure c'est ça (une série de mesure = un fichier correspondant) ?

    Concernant l'affichage, j'ai toujours fonctionné avec Pyside et je suis à l'aise avec donc je pense le garder. Ceci étant dit, je rejoins ton point plus haut éliminant Excel: Afficher un graphique Excel avec Pyside nécessiterait que j'exporte ce graphique en image pour l'afficher... Et je n'ai pas la moindre idée de comment faire à partir de Python.

    Merci de ta réponse !

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    J'ai déjà utilisé XlsxWriter (et XlswReader), oui, mais que pour la lecture et l'écriture de données sans formatage ni graph. Mais plus depuis que j'utilise pandas, qui propose cette fonctionnalité là nativement. C'est le module rêver des que l'on veut manipuler des tableaux: fonctions, statistique, tableaux croisés dynamiques, extractions, filtrage, groupage, etc..

    Je pense que le fichier csv est le bon format ici. Très facile à lire en python (modules csv, numpy, pandas) et tout aussi lisible par Excel si besoin par la suite. Facile aussi à partager avec un tiers.

    ou garder en mémoire si l'acquisition se fait en une seule fois (du genre récupérer toutes les données à la fois depuis une source).
    Je pensais par là que la carte pouvait servir de moyen d'acquisition en temps réel (genre thermomètre, baromètre, colorimètre, machinmètre). Pas du tout le cas visiblement.

    J

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Julien N Voir le message
    Mais plus depuis que j'utilise pandas, qui propose cette fonctionnalité là nativement. C'est le module rêver des que l'on veut manipuler des tableaux: fonctions, statistique, tableaux croisés dynamiques, extractions, filtrage, groupage, etc..
    J'en déduis qu'il serait très utile d'utiliser à la fois Pandas et Matplotlib. Cependant il y a quelque chose que j'ai du mal à saisir: Ces deux modules servent-ils à la même chose ? Dans quel cas vas tu utiliser l'un ou l'autre ?

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Citation Envoyé par poalcospe Voir le message
    Ces deux modules servent-ils à la même chose ?
    Pas du tout. Matplotlib est une librairie permettant de générer des graphs. Toute sorte de graph (voir gallerie) tandis que pandas sert à manipuler des données sous la forme de "séries", "tableaux" ou "panneaux" (un panneau est composé de plusieurs tableaux qui sont composés de séries). Pandas se repose sur une très populaire librairie, numpy, dédiée à la manipulation de vecteurs et matrices (avec toute une chiée de super fonctions vectorielles). Pandas est inspiré du langage R très utilisé en statistiques.

    Les trois ensembles (numpy - et par extension scipy qui englobe numpy -, pandas et matplotlib) forment un combo très puissant pour ce qui est de l'analyse, manipulation et représentation de données. Ce qui fait que python n'a strictement rien à envier à MatLab.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ok je comprend mieux. Je pense que Pandas n'est pas indispensable pour le projet, le fichier CSV étant relativement simple à construire vu les données que j'ai à traiter. Par contre pour une utilisation jumelée de Python avec Excel ça peut être intéressant. Ce que tu me dis me conforte donc dans l'idée que l'une des solutions que j'ai identifié peut être bien adaptée à ce projet; merci.

    Je reste néanmoins à l'écoute au cas où d'autres propositions seraient émises.

Discussions similaires

  1. Réponses: 61
    Dernier message: 29/12/2016, 12h58
  2. Réponses: 0
    Dernier message: 04/12/2014, 11h26
  3. Réponses: 0
    Dernier message: 11/12/2012, 15h08
  4. [Avis] Quelles sont les meilleures API et outils Java ?
    Par Mickael Baron dans le forum API standards et tierces
    Réponses: 33
    Dernier message: 08/06/2011, 14h39
  5. Réponses: 5
    Dernier message: 25/05/2009, 14h59

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