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

Calcul scientifique Python Discussion :

Rang sur deux colonnes


Sujet :

Calcul scientifique Python

  1. #1
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut Rang sur deux colonnes
    Bonjour,


    J'ai crée avec panda un tableau très simple à partir d'un csv.
    La colone qui m'interesse principalement est la colonne 'score' qui est triée dans l'ordre décroissant.

    Tableau.score contient une liste de scores allant de 0 à 1.
    Sur cette colonne, j'effectue un k-mean en 3 cluster que je mets dans mon Tableau aussi.

    Actuellement, ca va me donner un truc comme cela :


    Score Label
    1 2
    0.90 2
    0.85 2
    0.60 0
    0.60 0
    0.55 0
    0.50 0
    0.49 0
    0.1 1
    0 1

    Etant donné que je suis en 1 dimension, je voudrais renuméroter mon label en suivant l'ordre de mes scores.
    Je pensais utiliser la fonction rank() mais j'ai un peu du mal à la gérer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau.['label'].rank(method='dense')
    me retourne le rang des labels, c'est à dire 1;2;3 en lieu et place de 0;1;2, sans prendre en compte l'ordre des scores.
    Il me faudrait une combinaison de la méthode first et la méthode dense

    Vous auriez une facon astucieuse de faire cela ?


    ------------------------------------------------------------------------------------------------------------------


    Petit edit, car c'est vrai qu'après la remarque de tyrtamos, je peux très bien me debarasser de la notion de kmean qui n'apporte rien.
    On va simplifier donc, il s'agit d'un problème de calcule de rang sur deux colonnes.
    Si vous reprenez le tableau ci-dessus, l'output doit être le suivant :

    Score Label
    1 1
    0.90 1
    0.85 1
    0.60 2
    0.60 2
    0.55 2
    0.50 2
    0.49 2
    0.1 3
    0 3

    On va remplacer les valeurs de la colonne label avec un auto incrément à chaque fois qu'on change de valeur. Sachant que le tableau est trié par la colonne score décroissant, et que un meme label ne peut apparaitre que consécutivement,
    c'est à dire que je peux avoir par exemple 2222000011111 ou encore 000001111122222 (ils peuvent être déja ordonnés, je n'ai pas de controle dessus) mais je n'aurais jamais 121210000.
    Ce que je voudrais, c'est le traiter directement avec une création de colonne dans pandas, sans avoir à parcourir mon tableau (en parcourant c'est trivial)

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    A mon avis, pour avoir des réponses, il faut traduire le problème en termes intelligibles pour un utilisateur de Python: Ceux qui ne comprendront pas le " j'effectue un k-mean en 3 cluster" ne répondront pas.
    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 éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Bon, j'ai trouvé une solution.
    Je sais pas si c'est la meilleur facon de le faire. je veux bien un ou deux commentaires, savoir si y'a un truc plus élégant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau.groupby('label')['score'].transform(np.max).rank(ascending=False, method='dense')

Discussions similaires

  1. label à caption défilante
    Par ulysse66x dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/06/2003, 21h01
  2. Faire defiler Texte dans un label
    Par Techsan dans le forum Composants VCL
    Réponses: 5
    Dernier message: 08/06/2003, 23h29
  3. [Kylix] Labels du QTreeView tronqués
    Par Mister Nono dans le forum EDI
    Réponses: 3
    Dernier message: 05/11/2002, 19h45
  4. [VB6] Des labels qui réagissent à la souris
    Par murielle dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/10/2002, 14h19
  5. scroll dans un label
    Par Pretender dans le forum Composants VCL
    Réponses: 9
    Dernier message: 27/09/2002, 17h06

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