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

Bibliothèques tierces Python Discussion :

[pandas] Trier des données


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Points : 11
    Points
    11
    Par défaut [pandas] Trier des données
    Bonsoir,

    Je dispose d'un fichier .csv avec des données de mesure à intervalle de temps régulier (15 min) qui s'étalent sur plusieurs jours.
    Les données sont du type:

    Date/Time Machine Température
    21/07/2012 01:00 1 25
    21/07/2012 01:15 2 28
    21/07/2012 01:30 1 35
    ... ... ...
    21/07/2012 23:45 3 24
    22/07/2012 00:00 1 21
    22/07/2012 00:15 2 33
    ... ... ...

    J'utilise pandas pour lire le fichier .csv et séparer les données.
    Mon but serait de séparer ce gros fichier et plusieurs petits qui regroupent les données liées à une même machine, pour un même jour.

    Donc avec les données précédentes cela donnerait un fichier contenant:
    Date/Time Machine Température
    21/07/2012 01:00 1 25
    21/07/2012 01:30 1 35

    puis un autre contenant:
    Date/Time Machine Température
    22/07/2012 00:00 1 21

    Et idem pour les machines 2 et 3.

    Pour ce qui est de lire les données et de créer le nouveau fichier ça va, mais c'est au niveau du tri des données que je bloque.
    Je suppose qu'il faut extraire le jour présent dans la date avec quelque chose du type date.day mais à cela vient s'ajouter la condition sur la machine, et j'ai du mal à visualiser la structure du code...
    Je suis persuadé que ce n'est pourtant pas bien dur mais je débute Python

    En espérant que vous pourrez m'aider,

    Bonne soirée.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ce problème est-il résolu?

    Sinon, ce qui est montré n'est pas un fichier csv mais un simple fichier texte, et c'est plus facile à traiter.

    Pour le tri, on utilise l'argument "key=" avec lambda pour indiquer à "sort" ou à "sorted" ce qu'il faut utiliser pour les comparaisons.

    Pour mettre les dates dans l'ordre chronologique, on l'inverse: "16/11/2017" =>"20171116".

    Une fois le tri fait selon les dates et les numéros de machine, on fait une boucle et on créé un nouveau fichier à chaque fois que la date ou le numéro de machine change.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Bonjour tyrtamos,

    Merci pour ton aide.
    Le fichier est bien un .csv, j'ai juste écrit de cette façon pour que ce soit plus lisible.
    J'ai réussi à bien avancer sur le code, j'ai crée un nouveau fichier par mois et par machine, qui est trié par date, et. chaque fichier se présente maintenant comme suit:

    Date/Time Machine Température
    2017/05/01 15:00 1 25
    2017/05/01 22:00 1 24
    2017/05/02 15:00 1 22
    2017/05/02 22:00 1 21
    ...
    2017/05/31 15:00 1 29
    2017/05/31 22:00 1 30

    Maintenant je dois faire la boucle pour créer un nouveau fichier dès que le jour change, et le nommer 'Numéro de Machine'+'Jour'+'Mois'.
    Mais je ne vois pas trop comment faire cette fameuse boucle d'une façon un minimum élégante...

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si tu veux un fichier à chaque fois que la date ou le numéro de machine change, on peut faire ça d'un seul coup:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    liste = [
    "21/07/2012 01:00 1 25",
    "21/07/2012 01:15 2 28",
    "21/07/2012 01:30 1 35",
    "23/07/2012 23:45 3 24",
    "22/07/2012 00:00 1 21",
    "22/07/2012 00:15 2 33",
    "22/07/2012 00:00 1 21",
    "23/07/2012 00:15 3 33",
    "22/07/2012 00:00 1 21",
    "22/07/2012 00:15 2 33",
    "23/07/2012 00:15 2 33",
    "22/07/2012 00:00 1 21",
    "22/07/2012 00:15 3 33",
    "24/07/2012 00:00 1 21",
    "22/07/2012 00:15 2 33"
        ]
     
    print()
    print("Données de départ")
    for ligne in liste:
        print(ligne)
     
    liste2 = sorted(liste, key=lambda v: v[6:10]+v[3:5]+v[0:2]+v[17])
    print()
    print("Données triées par date + num machine")
    for ligne in liste2:
        print(ligne)
     
    print()
    print("Création des fichiers:")
    date = None
    mach = None
    fichier = None
    fs = None
    for ligne in liste2:
        if ligne[0:10]!=date or ligne[17]!=mach:
            fichier = ligne[17] + "_" + ligne[0:2] + ligne[3:5] # création du nom de fichier
            print("nouveau fichier =>", fichier)
            if fs!=None:
                fs.close() # ferme le fichier précédent s'il existe
            fs = open(fichier, "w") # ouvre le nouveau fichier
            if ligne[0:10]!=date:
                date = ligne[0:10] # met à jour de la date courante
            if ligne[17]!=mach:
                mach = ligne[17] # met à jour du num. de machine courant
        fs.write(ligne + '\n') # écrit la ligne dans le fichier courant
    Ce qui affiche comme résultat:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Données de départ
    21/07/2012 01:00 1 25
    21/07/2012 01:15 2 28
    21/07/2012 01:30 1 35
    23/07/2012 23:45 3 24
    22/07/2012 00:00 1 21
    22/07/2012 00:15 2 33
    22/07/2012 00:00 1 21
    23/07/2012 00:15 3 33
    22/07/2012 00:00 1 21
    22/07/2012 00:15 2 33
    23/07/2012 00:15 2 33
    22/07/2012 00:00 1 21
    22/07/2012 00:15 3 33
    24/07/2012 00:00 1 21
    22/07/2012 00:15 2 33
     
    Données triées par date + num machine
    21/07/2012 01:00 1 25
    21/07/2012 01:30 1 35
    21/07/2012 01:15 2 28
    22/07/2012 00:00 1 21
    22/07/2012 00:00 1 21
    22/07/2012 00:00 1 21
    22/07/2012 00:00 1 21
    22/07/2012 00:15 2 33
    22/07/2012 00:15 2 33
    22/07/2012 00:15 2 33
    22/07/2012 00:15 3 33
    23/07/2012 00:15 2 33
    23/07/2012 23:45 3 24
    23/07/2012 00:15 3 33
    24/07/2012 00:00 1 21
     
    Création des fichiers:
    nouveau fichier => 1_2107
    nouveau fichier => 2_2107
    nouveau fichier => 1_2207
    nouveau fichier => 2_2207
    nouveau fichier => 3_2207
    nouveau fichier => 2_2307
    nouveau fichier => 3_2307
    nouveau fichier => 1_2407
    Les nouveaux fichiers sont créés et contiennent les bonnes lignes.

    Tu vois comment on traite la boucle: en gros, on maintient une variable externe à cette boucle qui contient la valeur courante. A chaque tour de boucle, on compare la nouvelle valeur à la valeur courante. Si elle a changé, on créé un nouveau fichier et on met à jour la valeur courante.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup! Je vois plus clair.

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

Discussions similaires

  1. trier des données sur excel via les MFC
    Par craryb dans le forum MFC
    Réponses: 1
    Dernier message: 22/03/2007, 14h51
  2. [VA-E] trier des données avec macro VBA
    Par M@XflY dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 13/01/2007, 13h24
  3. [Tableaux] Trier des données avec des tableaux
    Par yobogs dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2006, 13h39
  4. Re - Trier des données par ordre d'importance
    Par popoliline dans le forum Access
    Réponses: 14
    Dernier message: 25/08/2006, 12h29
  5. Trier des données par ordre d'importance
    Par popoliline dans le forum Access
    Réponses: 19
    Dernier message: 23/08/2006, 19h42

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