Outils pour utilisateurs

Outils du site


issue143:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue143:python [2019/04/11 10:56] auntieeissue143:python [2019/04/11 13:58] (Version actuelle) andre_domenech
Ligne 23: Ligne 23:
 I will be using the latest version of Page (4.21) that was released on March 1, 2019 and can be downloaded from https://sourceforge.net/projects/page/ .** I will be using the latest version of Page (4.21) that was released on March 1, 2019 and can be downloaded from https://sourceforge.net/projects/page/ .**
  
-Maintenant, commençons. Pour utiliser le gadget pandastable, nous devons installer la bibliothèque. Cela peut être fait en utilisant pip au niveau du terminal. Comme nous utiliserons Python3 pour ce projet, nous utiliserons pip3. Si vous utilisez Python 2.x, utilisez « pip ». La commande est...+Maintenant, commençons. Pour utiliser le gadget pandastable, nous devons installer la bibliothèque. Cela peut être fait en utilisant pip au niveau du terminal. Comme nous utiliserons Python3 pour ce projet, nous utiliserons pip3. Si vous utilisez Python 2.x, utilisez « pip ». La commande est :
  
 pip3 install pandastable pip3 install pandastable
  
-(Si, quand vous essayez de lancer le programme ci-dessous, vous recevez un message d'erreur disant quelque chose comme « from pandas.tools import plotting - ImportError: No module named tools » (de pandas.tools, suivi d'importation - Erreur d'importation : pas d'outils nommés du module), c'est probablement dû à la version de pandas que vous avez installé, qui serait la 0.19 ou moins. Essayez de mettre à jour votre bibliothèque pandas (pip3 install --upgrade pandas)).+(Si, quand vous essayez de lancer le programme ci-dessous, vous recevez un message d'erreur disant quelque chose comme « from pandas.tools import plotting - ImportError: No module named tools » (de pandas.tools, suivi d'importation - Erreur d'importation : pas d'outils nommés du module), c'est probablement dû à la version de pandas que vous avez installée, qui serait la 0.19 ou moins. Essayez de mettre à jour votre bibliothèque pandas (pip3 install --upgrade pandas)).
  
-J'utiliserai la dernière version de Page (la 4.21) qui a été publiée le 1er mars 2019 et peut être téléchargée depuis https://sourceforge.net/projects/page/ .+J'utiliserai la dernière version de Page (la 4.21) qui a été publiée le 1er mars 2019 et peut être téléchargée depuis https://sourceforge.net/projects/page/
  
-**Now that we have pandastable and Page, we can go ahead and start designing the form [[https://www.fullcirclemag.fr/phpBB3/viewtopic.php?f=135&t=1431|FIXME]]. Start Page and move the new Topmost form to somewhere near the center of the screen. You can size it to any dimensions you wish, but I used 1004 for the width and 785 for the height for this demo. Set the title to "Pandastable Demo" in the Attribute Editor.+**Now that we have pandastable and Page, we can go ahead and start designing the form . Start Page and move the new Topmost form to somewhere near the center of the screen. You can size it to any dimensions you wish, but I used 1004 for the width and 785 for the height for this demo. Set the title to "Pandastable Demo" in the Attribute Editor.
  
 We will add two frames, one "standard" Tk button and one Page custom widget. That's all we need. We will add two frames, one "standard" Tk button and one Page custom widget. That's all we need.
Ligne 39: Ligne 39:
 The second frame will be called "frameCustom", and will hold our custom widget (pandastable). I placed it a few pixels below the toolbar frame at X=2, Y=43, and set the width to 1000 and the height to 735.** The second frame will be called "frameCustom", and will hold our custom widget (pandastable). I placed it a few pixels below the toolbar frame at X=2, Y=43, and set the width to 1000 and the height to 735.**
  
-Maintenant que nous avons pandastable et Page, nous pouvons commencer la conception la forme. Démarrez Page et déplacez la forme la plus en haut quelque part vers le milieu de l'écran. Vous pouvez la redimensionner aux dimensions que vous souhaitez ; j'ai utilisé 1 004 pour la largeur et 785 pour la hauteur pour cette démonstration. Réglez le titre en « Démo Pandastable » dans l'éditeur d'attributs (Attribut Editor).+Maintenant que nous avons pandastable et Page, nous pouvons commencer la conception et la forme [[https://www.fullcirclemag.fr/phpBB3/viewtopic.php?f=135&t=1431|FIXME]]. Démarrez Page et déplacez la forme la plus en haut quelque part vers le milieu de l'écran. Vous pouvez la redimensionner aux dimensions que vous souhaitez ; j'ai utilisé 1 004 pour la largeur et 785 pour la hauteur pour cette démonstration. Réglez le titre en « Démo Pandastable » dans l'éditeur d'attributs (Attribut Editor).
  
 Nous ajouterons deux cadres, un bouton Tk « standard » et un gadget Page personnalisé. C'est tout ce dont nous avons besoin. Nous ajouterons deux cadres, un bouton Tk « standard » et un gadget Page personnalisé. C'est tout ce dont nous avons besoin.
Ligne 53: Ligne 53:
 Here is what the GUI looks like on my system at this point...** Here is what the GUI looks like on my system at this point...**
  
-Ensuite, placez un bouton Tk Standard dans le cadre de la barre d'outils. Mettez « btnExit » comme Alias, « Exit » comme texte et réglez l'attribut de commande de l'éditeur d'attribut à « on btnExit ». Ceci créera une fonction de rappel pour le moment où le bouton sera appuyé.+Ensuite, placez un bouton Tk standard dans le cadre de la barre d'outils. Mettez « btnExit » comme Alias, « Exit » comme texte et réglez l'attribut de commande de l'Éditeur d'attribut à « on_btnExit ». Ceci créera une fonction de rappel pour le moment où l'on aura appuyé sur le bouton.
  
-Enfin, descendez vers le bas de la barre d'outils du gadget et sélectionnez « Custom » (personnalisé). Puis cliquez dans le gadget frameCustom pour mettre en place la réserve d'emplacement de notre gadget personnalisé. Dans Widget Tree (arborescence du gadget), faites un clic droit sur la ligne marquée « Custom: Custom1 », sélectionnez Widget dans la liste déroulante et sélectionnez « File container » (conteneur de fichier). Ceci agrandit la réserve de place du gadget personnalisé pour remplir le cadre.+Enfin, descendez vers le bas de la barre d'outils du gadget et sélectionnez « Custom » (personnalisé). Puis cliquez dans le gadget frameCustom pour mettre en place la réserve d'emplacement de notre gadget personnalisé. Dans Widget Tree (arborescence du gadget), faites un clic droit sur la ligne marquée « Custom: Custom1 », sélectionnez Widget dans la liste déroulante et sélectionnez « Fill container » (remplir le conteneur). Ceci agrandit la réserve de place du gadget personnalisé pour remplir le cadre.
  
-Voici à quoi ressemble le GUI sur mon système à ce niveau-là...+Voici à quoi ressemble le GUI sur mon système actuellement :
  
 **That's it. Save the .tcl file (File | Save), and save it into a convenient folder calling the file "pandastabledemo". Then, select the "Gen_Python" menu item and generate the GUI file and the Support module (these will have the same base filename as our .tcl file, but will be named pandastabledemo.py and pandastabledemo_support.py). **That's it. Save the .tcl file (File | Save), and save it into a convenient folder calling the file "pandastabledemo". Then, select the "Gen_Python" menu item and generate the GUI file and the Support module (these will have the same base filename as our .tcl file, but will be named pandastabledemo.py and pandastabledemo_support.py).
Ligne 67: Ligne 67:
 from pandastable import Table** from pandastable import Table**
  
-C'est fait. Sauvegardez le fichier .tcl (File | Save - Fichier | Enregistrer) et sauvegardez-le dans un répertoire convenable en appelant le fichier « pandastabledemo ». Ensuite, sélectionnez la ligne de menu « Gen Python » (générer Python) et générez le fichier du GUI et le module de Support (ils auront le même nom de base que notre fichier .tcl, mais ils seront nommés pandastabledemo.py and pandastabledemo_support.py).+C'est tout. Sauvegardez le fichier .tcl (File | Save - Fichier | Enregistrer) dans un répertoire convenable en appelant le fichier « pandastabledemo ». Ensuite, sélectionnez la ligne de menu « Gen_Python » (générer Python) et générez le fichier du GUI et le module de Support (ils auront le même nom de base que notre fichier .tcl, mais ils seront nommés pandastabledemo.py and pandastabledemo_support.py).
  
 Maintenant, vous pouvez fermer Page et ouvrir les deux fichiers Python dans votre environnement de développement (IDE) préféré. Vous n'aurez pas à modifier le fichier du GUI (pandastabledemo.py). Tout notre travail se fera dans le fichier pandastabledemo_support.py. Maintenant, vous pouvez fermer Page et ouvrir les deux fichiers Python dans votre environnement de développement (IDE) préféré. Vous n'aurez pas à modifier le fichier du GUI (pandastabledemo.py). Tout notre travail se fera dans le fichier pandastabledemo_support.py.
  
-La première chose que nous avons à faire est d'importer le gadget pandastable...+La première chose que nous avons à faire est d'importer le gadget pandastable :
  
 from pandastable import Table from pandastable import Table
Ligne 87: Ligne 87:
 Custom = Table** Custom = Table**
  
-Notez que nous n'importons présentement que la portion Table. C'est OK, ça ne nous limite pas. Ensuite, finissons le code de notre fonction de rappel « on btnExit() ». Nous allons juste ajouter une ligne en bas de ce code (n'oubliez pas d'indenter cette ligne pour coller au reste de la fonction)...+Notez que nous n'importons présentement que la portion Table. C'est OK, ça ne nous limite pas. Ensuite, finissons le code de notre fonction de rappel « on btnExit() ». Nous allons juste ajouter une ligne en bas de ce code (n'oubliez pas d'indenter cette ligne pour correspondre au reste de la fonction) :
  
 destroy_window() destroy_window()
  
-Ceci fermera notre programme proprement. Maintenant descendez en bas du fichier source et trouvez la ligne qui dit...+Ceci fermera notre programme proprement. Maintenant descendez en bas du fichier source et trouvez la ligne qui dit :
  
 Custom = tk.Frame     # To be updated by user with name of custom widget (à mettre à jour par l'utilisateur avec le nom du gadget personnalisé). Custom = tk.Frame     # To be updated by user with name of custom widget (à mettre à jour par l'utilisateur avec le nom du gadget personnalisé).
  
-Habituellement, je copie cette ligne et décommente l'original, puis je colle la ligne et la modifie comme j'en ai besoin. Dans ce cas, nous utiliserons...+Habituellement, je copie cette ligne et décommente l'original, puis je colle la ligne et la modifie comme j'en ai besoin. Dans ce cas, nous utiliserons :
  
 Custom = Table Custom = Table
Ligne 117: Ligne 117:
 That’s all the code changes we need to do. Save your file and we'll discuss what these lines do.** That’s all the code changes we need to do. Save your file and we'll discuss what these lines do.**
  
-Ceci crée un pointeur vers l'importation de pandastable que nous avons faite il y a quelques lignes. Maintenant, nous modifierons la fonction « init » avec notre code. Après la ligne « root = top », mettez le code suivant...+Ceci crée un pointeur vers l'importation de pandastable que nous avons faite il y a quelques lignes. Maintenant, nous modifierons la fonction « init » avec notre code. Après la ligne « root = top », mettez le code suivant :
  
 csvfile = "BreadBasket.csv" csvfile = "BreadBasket.csv"
Ligne 145: Ligne 145:
 La première ligne assigne le nom de notre fichier CSV à « BreadBasket.csv » (assurez-vous de copier votre fichier csv dans votre répertoire de travail, ou ajoutez-lui le chemin complet), qui est le fichier que nous avons utilisé précédemment dans cette série. Ensuite, nous initialisons le gadget pandastable. Nous lui créons un alias nommé « pt ». Ensuite, nous lui disons que son parent est (w.frameCustom) et que nous voulons montrer à la fois la barre d'outils et la barre de statut. La première ligne assigne le nom de notre fichier CSV à « BreadBasket.csv » (assurez-vous de copier votre fichier csv dans votre répertoire de travail, ou ajoutez-lui le chemin complet), qui est le fichier que nous avons utilisé précédemment dans cette série. Ensuite, nous initialisons le gadget pandastable. Nous lui créons un alias nommé « pt ». Ensuite, nous lui disons que son parent est (w.frameCustom) et que nous voulons montrer à la fois la barre d'outils et la barre de statut.
  
-Ensuite, nous appelons la méthode .show() de pandastable et importons le fichier csv. Enfin et surtout, nous appelons la fonction update() du gadget de la table.+Ensuite, nous appelons la méthode .show() de pandastable et importons le fichier csv. Enfin et surtout, nous appelons la fonction .update() du gadget de la table.
  
-C'est tout. Tout le reste est contenu dans pandastable lui-meme. Au total, ce sont 8 lignes (sans compter les commentaires) que nous avons ajouté au code que Page nous avait fourni.+C'est tout. Tout le reste est contenu dans pandastable lui-meme. Au total, ce sont 8 lignes (sans compter les commentaires) que nous avons ajoutées au code que Page nous avait fourni.
  
 Maintenant, lançez votre programme et vous devriez voir quelque chose comme ce qui est présenté ci-dessous. Maintenant, lançez votre programme et vous devriez voir quelque chose comme ce qui est présenté ci-dessous.
Ligne 161: Ligne 161:
 Même sur ma vieille et lente machine, la forme s'affiche presque immédiatement, et la table est déjà chargée, avec ses 21 293 lignes. Maintenant regardons un peu ce que nous pouvons faire. Même sur ma vieille et lente machine, la forme s'affiche presque immédiatement, et la table est déjà chargée, avec ses 21 293 lignes. Maintenant regardons un peu ce que nous pouvons faire.
  
-Nous pouvons redimmensionner les colonnes pour qu'elles s'ajustent à nos besoins comme dans un tableur. Si vous faîtes un clic droit dans la table, vous afficher un menu contextuel. Sélectionnez « Table Info » (Informations sur la table) et vous verrez quelque chose comme ce qui est présenté dans l'image ci-dessous.+Nous pouvons redimmensionner les colonnes pour qu'elles s'ajustent à nos besoins comme dans un tableur. Si vous faîtes un clic droit dans la table, un menu contextuel s'affichera. Sélectionnez « Table Info » (Informations sur la table) et vous verrez quelque chose comme ce qui est présenté dans l'image ci-dessous.
  
 Sur le côté gauche se trouvent les entêtes de lignes. Un clic droit dessus affichera un autre menu contextuel qui vous permet de trier, de remettre à zéro et d'inverser ou de renommer les index tout comme d'additionner, d'effacer et de dupliquer les lignes et plus encore. Sur le côté gauche se trouvent les entêtes de lignes. Un clic droit dessus affichera un autre menu contextuel qui vous permet de trier, de remettre à zéro et d'inverser ou de renommer les index tout comme d'additionner, d'effacer et de dupliquer les lignes et plus encore.
Ligne 173: Ligne 173:
 From here, I simply selected the bar graph from the plot type dropdown, and grouped by date. You can see the resulting image.** From here, I simply selected the bar graph from the plot type dropdown, and grouped by date. You can see the resulting image.**
  
-En bas, la barre de statut montre le nombre de lignes et de colonnes, vous permet d'agrandir et de réduire la vue et d'agrandir ou de réduire la largeur de colonnes.+En bas, la barre de statut montre le nombre de lignes et de colonnes, vous permet d'agrandir et de réduire la vue et d'agrandir ou de réduire la largeur des colonnes.
  
-À droite, la barre d'outils vous offre la possibilité de tracer, aggréger, pivoter, fusionner des tables et plus encore. À peu près tout ce dont vous avez besoin pour analyser vos données.+À droite, la barre d'outils vous offre la possibilité de tracer, agréger, pivoter, fusionner des tables et plus encore. À peu près tout ce dont vous avez besoin pour analyser vos données.
  
-J'ai chargé un autre petit fichier csv pour montrer la fonction de traçage. C'est en gros une liste des pas qu'un ami, qui se remet d'une opération est capable de faire, par jour. Il l'a fait comme un simple fichier texte, mais je l'ai converti en CSV juste pour ce projet. En sélectionnant les colonnes Date et Steps (pas), puis en cliquant sur le bouton « plot » (tracer) de la barre d'outils, la fenêtre suivante s'affiche après quelques secondes de réflexion.+J'ai chargé un autre petit fichier csvpour montrer la fonction de traçage. C'est en gros une liste des pas qu'un ami, qui se remettait d'une opération était capable de faire, par jour. Il l'a fait comme un simple fichier texte, mais je l'ai converti en CSV juste pour ce projet. En sélectionnant les colonnes Date et Steps (pas), puis en cliquant sur le bouton « plot » (tracer) de la barre d'outils, la fenêtre suivante s'affiche après quelques secondes de réflexion.
  
 À partir de là, j'ai simplement sélectionné le graphique à barres dans la liste déroulante des types de graphique, et regroupé par date. Vous pouvez voir l'image résultante. À partir de là, j'ai simplement sélectionné le graphique à barres dans la liste déroulante des types de graphique, et regroupé par date. Vous pouvez voir l'image résultante.
Ligne 193: Ligne 193:
 Ainsi, le but de cet exercice est de vous montrer qu'en quelques minutes dans Page, avec 8 lignes de code et le gadget pandastable, nous obtenons à peu près tout ce qui est nécessaire pour créer un programme qui gère les données de pandas. Comme toujours, vous pouvez télécharger mon code (les trois fichiers Page) à partir de pastebin à https://pastebin.com/rEKWYBey, https://pastebin.com/2KUPXN7s, https://pastebin.com/prctf9bZ. Ainsi, le but de cet exercice est de vous montrer qu'en quelques minutes dans Page, avec 8 lignes de code et le gadget pandastable, nous obtenons à peu près tout ce qui est nécessaire pour créer un programme qui gère les données de pandas. Comme toujours, vous pouvez télécharger mon code (les trois fichiers Page) à partir de pastebin à https://pastebin.com/rEKWYBey, https://pastebin.com/2KUPXN7s, https://pastebin.com/prctf9bZ.
  
-Bien sûr, il existe une autre option. Vous pouvez simplement suivre les indications sur la page du Dr Farrell pour installer l'appli Dataexplore, utilisant snap, qui est basée sur le gadget pandastable (Dataexplore est BEAUCOUP plus puissant que cette simple démo, mais qu'espérez-vous avec 8 lignes de code ?) et ne rien faire d'autre. Mais où est le plaisir là dedans ?+Bien sûr, il existe une autre option. Vous pouvez simplement suivre les indications sur la page du Dr Farrell pour installer avec snap l'appli Dataexplore, qui est basée sur le gadget pandastable (Dataexplore est BEAUCOUP plus puissant que cette simple démo, mais qu'espérez-vous avec 8 lignes de code ?) et ne devoir rien faire d'autre. Mais où est le plaisir là-dedans ?
  
 Jusqu'à la prochaine fois, amusez-vous à jouer avec votre nouvelle appli et à en apprendre plus sur Pandas. Jusqu'à la prochaine fois, amusez-vous à jouer avec votre nouvelle appli et à en apprendre plus sur Pandas.
  
issue143/python.1554973011.txt.gz · Dernière modification : 2019/04/11 10:56 de auntiee