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 :

Gestion d'un dataframe


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 3
    Par défaut Gestion d'un dataframe
    Bonjour,
    Je suis nouveau sur le forum et je débute le python au sein d'une formation sur la finance.
    Je souhaiterai mieux comprendre le fonctionnement d'un dataframe et notamment les méthodes de développement liées.
    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def traitement(): 
    # on demande à l'utilisateur de selectionner un fichier avec la commande askopenfilename
     
        fichier = askopenfilename(initialdir=r"C:\Téléchargements", title="Choisir le fichier à ouvrir",filetypes=[(" CSV Files ","*.csv*")])
     
        liste = pd.read_csv(fichier, header=None)
    Avec pandas et pd.read_csv, si j'ai bien compris je créé un dataframe à partir d'un fichier csv mais en faisant appel à cette fonction dans un menu tkinter, mon dataframe est-il utilisable dans d'autres fonctions ensuite : typiquement pour faire d'autres analyses ? ou bien y a -t-il une autre méthode pour bien gérer ce dataframe c'est à dire en dehors de la fonction ?
    Merci par avance pour vos conseils.
    Bonne journée.

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

    Citation Envoyé par vlavince Voir le message
    Avec pandas et pd.read_csv, si j'ai bien compris je créé un dataframe à partir d'un fichier csv mais en faisant appel à cette fonction dans un menu tkinter, mon dataframe est-il utilisable dans d'autres fonctions ensuite
    Si la fonction traitement est appelée par tkinter, on lui donnera le nom de callback (pour les différentier des fonctions appelées depuis votre programme).
    La différence est qu'on n'a pas accès aux objets qu'ils (les callbacks) pourraient retourner (puisque appelés par tkinter...). Et les objets crées ne seront plus accessibles à la sortie sauf à les associer à une variable globale (qui leur survivra).

    Citation Envoyé par vlavince Voir le message
    Je souhaiterai mieux comprendre le fonctionnement d'un dataframe et notamment les méthodes de développement liées.
    Pour l'instant, la portée des variables et le modèle de programmation imposé par tkinter (ou autre GUI) est à revoir et que ce soit un dataframe ou n'importe quel autre objet, ce serait le même soucis.


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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 3
    Par défaut la suite ...
    Merci pour ta réponse. Du coup, j'ai déclaré le dataframe df en dehors de la fonction et la fonction utilise la variable globale df et la modifie.

    Mais lorsque que j'utilise le dataframe dans une autre fonction je n'arrive pas à utliliser les "names" du dataframe. Pourtant, lorsque je fais un df.head() j'ai bien toutes les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df.resample("D").mean().plot(x ="date", y="ca", kind = "bar")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\MH-10044\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3361, in get_loc
        return self._engine.get_loc(casted_key)
      File "pandas\_libs\index.pyx", line 76, in pandas._libs.index.IndexEngine.get_loc
      File "pandas\_libs\index.pyx", line 108, in pandas._libs.index.IndexEngine.get_loc
      File "pandas\_libs\hashtable_class_helper.pxi", line 5198, in pandas._libs.hashtable.PyObjectHashTable.get_item
      File "pandas\_libs\hashtable_class_helper.pxi", line 5206, in pandas._libs.hashtable.PyObjectHashTable.get_item
    KeyError: 'date'
     
    The above exception was the direct cause of the following exception:
     
    Traceback (most recent call last):
      File "C:\Users\MH-10044\Anaconda3\lib\tkinter\__init__.py", line 1892, in __call__
        return self.func(*args)
      File "C:\Users\MH-10044\AppData\Local\Temp/ipykernel_12448/3951918022.py", line 50, in analyse1
        df.resample("D").mean().plot(x ="date", y="loginuser", kind = "bar")
      File "C:\Users\MH-10044\Anaconda3\lib\site-packages\pandas\plotting\_core.py", line 937, in __call__
        elif not isinstance(data[x], ABCSeries):
      File "C:\Users\MH-10044\Anaconda3\lib\site-packages\pandas\core\frame.py", line 3458, in __getitem__
        indexer = self.columns.get_loc(key)
      File "C:\Users\MH-10044\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
        raise KeyError(key) from err
    KeyError: 'date'
    Bonne soirée.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    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 676
    Par défaut
    Citation Envoyé par vlavince Voir le message
    Mais lorsque que j'utilise le dataframe dans une autre fonction je n'arrive pas à utliliser les "names" du dataframe. Pourtant, lorsque je fais un df.head() j'ai bien toutes les données.
    Ca n'a rien à voir avec le sujet de départ et, à priori, si vous exécutiez les mêmes opérations sur le dataframe en dehors de votre application vous devriez pouvoir reproduire le problème (et poster de quoi le reproduire).

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 3
    Par défaut suite ..
    Merci. Oui j'ai bien réussi avec la variable globale dans la première fonction. Cette fonction modifie le datafame déclaré hors fonction. Je devrais donc pouvoir récupérer ces modifications dans ma deuxième fonction ? Je ne comprends pas bien mais je débute. Faut-il de nouveau déclarer la variable globale ? Encore merci beaucoup et bonne soirée.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    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 676
    Par défaut
    Citation Envoyé par vlavince Voir le message
    Je devrais donc pouvoir récupérer ces modifications dans ma deuxième fonction ? Je ne comprends pas bien mais je débute. Faut-il de nouveau déclarer la variable globale ?
    On ne déclare pas une variable globale. Toutes les fonctions ont accès à l'objet associé... et le mot clef "global" n'est là que pour assigner un nouvel objet à la variable.

    Un exercice qu'on vous propose généralement dans les tutos est de créer une liste (associée à une variable globale) dans une fonction et y accéder depuis une autre... Commencer avec des objets de base permet de voir les mécanismes importants sans trop les enfouir dans un tas de lignes de code.

    Sans maîtriser ces mécanismes de bases, vous pataugez dans le doute... vous n'êtes pas très confiant sur ce que vous écrivez. Pire, vous n'avez aucune idée des informations à communiquer pour qu'on puisse vous aider.

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

Discussions similaires

  1. Gestion des valeurs dans un dataframe
    Par JFD59 dans le forum Général Python
    Réponses: 6
    Dernier message: 23/01/2019, 11h15
  2. Réponses: 2
    Dernier message: 31/08/2002, 21h37
  3. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  4. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11
  5. gestion d'un joystick ...
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h53

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