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 :

Faire un arbre à partir d'un gruyère ;)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Novembre 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 156
    Par défaut Faire un arbre à partir d'un gruyère ;)
    Bonjour !

    Je veux coder un algorithme qui pourrait transformer un affichage hiérarchique d'un arbre dans un fichier xlsx en une structure de données arborescente. Le problème étant que malgré la hierarchie bien faites du fichier donné c'est plein de trous ... comme un gruyère

    Voici l'apperçu des données que l'on peut trouver entières ici :

    Nom : 1IIZH.png
Affichages : 195
Taille : 221,9 Ko

    Et un exemple sous format réduit :

    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
    SIC,,,
    ,,,
    Division 1 : Mammals,,,
    0100,felines,,
    0110,,cats,
    0111,,,Abyssinian
    0112,,,Aegan
    0113,,,American Curl
    0120,,tiger,
    0121,,,Indochinese tiger 
    0122,,,Bengal tiger
    Divison 2 : Reptiles,,,
    1100,crocodilians,,
    1110,,crocodiles,
    1111,,,caïman
    1200,testudines,,
    1210,,tortoises,
    1211,,,capucine
    J'ai commencé à faire un pseudo code, mais je pense que ce n'est pas optimal... D'autant plus que l'on m'a glissé que les DataFrame multiindex étaient plus efficaces mais je ne sais pas encore m'en servir. Un autre m'a conseillé ElasticSearch mais pareil, c'est trop neuf pour moi.


    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
     
    from openpyxl import load_workbook
    import pandas as pd
     
    wb = load_workbook(filename='Trees.xlsx')
     
    i = 0
    division = 0
    niveau = 0
    typesDejaVus = []
    for cell in wb['Industry']['A']:
        if "Division" in cell
             #je dois créer un noeud père
             division +=1
        if cell.type() == int:
            # Si le chiffre au niveau [niveau +1] dans l'indicatif à quatre chiffre n'a pas déjà été vu c'est un noeud fils
            if (cell[niveau +1]  not in typeDejaVu):
                typesDejaVus = typesDejaVus + cell
                # Faire un enfant avec le contenu directement à droite
            # Sinon si le type a déjà été vu c'est que l'on est passé à une nouvelle section
            else if (le chiffre de la cellule au niveau[niveau +1] in typesDejaVus):
                typesDejaVus =[]
                # Faire un enfant avec le noeud suivant
            # sinon c'est qu'on fait face à une cellule vide
            else :
                nombreDeCellulesVidesLues +=1
        if nombreDeCellulesVidesLues <3:
             break
    PS : Le titre est volontairement un peu provocateur mais traduit néanmoins l'essentiel du problème

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Et pourquoi ne pas regarder d'abord sur internet comment peut-on construire un arbre en Python ?

    Je ne comprends pas votr emanière de raisonner dans votre pseudo-code. Expliquer peut-être un peu plus le résultat attendu sur l'exemple simple, ça pourrait éclairer.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/09/2011, 18h14
  2. Comment faire du MDX à partir d'une requete SQL?
    Par Immobilis dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 10/11/2005, 09h46
  3. Quel algorithme utilisé pour faire un arbre hiérarchique
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/01/2005, 21h30
  4. [débutant][Conception] Comment faire un arbre?
    Par dr_m1 dans le forum Général Java
    Réponses: 4
    Dernier message: 08/10/2004, 00h08
  5. [XSLT] trier un arbre à partir d'un attribut
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 30/08/2004, 12h05

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