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 :

Pandas : récupérer les données d'une liste suivant une fréquence donnée [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BioKore
    Homme Profil pro
    Dresseur d'Alpaga
    Inscrit en
    Septembre 2016
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Dresseur d'Alpaga

    Informations forums :
    Inscription : Septembre 2016
    Messages : 300
    Par défaut Pandas : récupérer les données d'une liste suivant une fréquence donnée
    Bonjour à vous!

    Je souhaites pouvoir obtenir, à partir d'une série de 'n' éléments, plusieurs séries contenant les éléments de la première, décalés d'un certain offset.
    comme ça ne me semble pas plus clair que le titre, voici un bout de code qui fait ceci avec des listes "core python":

    Code python : 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
     
     
    def sub_list(data:list(), offset:int) -> list(list()) :
     
        ret = list()
     
        for i in range(offset):
            res = list()
            j = i
            while j+offset < len(data):
                res.append(data[j])
                j = j+offset
     
            ret.append(res.copy())
     
     
        return ret
     
     
    data = list(range(0,27))
    ret = sub_list(data, 3)
     
    print(ret)

    Techniquement, ce bout de code devrait fonctionner en stand-allone (en tout cas il marche chez moi).

    Cependant, j'utilise la bibliothèque "Pandas", que j'utilise pour le traitement de séries temporelles, et je me demande donc s'il n'existe pas un moyen plus efficace qu'une fonction telle que donnée ci-dessus pour réaliser la chose ? Bien-entendu, il existe des solutions pour les séries temporelles, mais je voudrais avoir une variante moins indépendante du type d'index à disposition.

    Any clue ?

    Merci et bonne journée !

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 838
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BioKore Voir le message
    Bonjour à vous!
    Salut

    Citation Envoyé par BioKore Voir le message
    Techniquement, ce bout de code devrait fonctionner en stand-allone (en tout cas il marche chez moi).
    Il ne marche ni chez-moi, ni chez-toi. En effet, pour une liste de nombres range(0,27) (donc de 0 inclus à 26 inclus) voici ce qu'il sort: [[0, 3, 6, 9, 12, 15, 18, 21], [1, 4, 7, 10, 13, 16, 19, 22], [2, 5, 8, 11, 14, 17, 20, 23]]. Où sont les nombres 24, 25 et 26 ???
    Faut pas inclure l'offset dans le while => while j < len(data). Et on peut remplacer ce while si compliqué par un simple for => for j in range(i, len(data), offset) ce qui évite et l'initialisation et l'incrément.

    Ce qui peut alors mener à cet autre bout plus concis qui évite les append() si gourmands...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def sub_list(data, offset):
    	return list(list(data[j] for j in range(i, len(data), offset)) for i in range(offset))

    Sinon désolé je ne connais pas Panda...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Citation Envoyé par BioKore Voir le message
    Any clue ?
    Les listes sont des tableaux particuliers (une dimension) qu'on peut voir comme séquence et leur appliquer des "slices":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def sublist(seq, offset):
        return [ seq[i::offset] for i in range(offset) ]
    les dataframes pandas sont aussi "sliceables"... et modulo le fait que pandas soit un peu décalé par rapport à Python côté "copy/référence", ça devrait fonctionner avec une petite adaptation.

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

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 838
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    return [ seq[i::offset] for i in range(offset) ]
    Zut, j'ai pas pensé au 3° paramètre du slice
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé Avatar de BioKore
    Homme Profil pro
    Dresseur d'Alpaga
    Inscrit en
    Septembre 2016
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Dresseur d'Alpaga

    Informations forums :
    Inscription : Septembre 2016
    Messages : 300
    Par défaut
    Mein got !

    Trop fort. Je les ai vus en plus les slices lors de mes premiers pas dans Python !

    Merci bien pour ce rappel plus que nécessaire, non pas uniquement sur les slices, mais sur le fait que je devrais lâcher Pandas un peu le temps de revoir mes concepts de base de "coder en python" !


    Bonne soirée !!

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    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 753
    Par défaut
    Citation Envoyé par BioKore Voir le message
    mais sur le fait que je devrais lâcher Pandas un peu le temps de revoir mes concepts de base de "coder en python" !
    Sujet + verbe + complément, les bases sont fondamentales dans toutes les langues...

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupérer les données d'une liste déroulante
    Par RootsRagga dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/12/2008, 01h04
  2. Récupérer les données d'une liste dans une autre liste
    Par benoit knk dans le forum SharePoint
    Réponses: 2
    Dernier message: 23/05/2008, 16h10
  3. Réponses: 5
    Dernier message: 07/01/2008, 11h43
  4. Réponses: 7
    Dernier message: 28/06/2007, 11h08
  5. Récupérer les données d'une liste dans un $_POST
    Par Sangdrax1604 dans le forum Langage
    Réponses: 4
    Dernier message: 19/10/2006, 10h55

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