Seite 1 von 1

Wie man einen Baum aus einem Gruyère macht;) ?

Verfasst: Freitag 11. Mai 2018, 01:09
von AntoineP
Hallo!

Ich möchte einen Algorithmus kodieren, die eine hierarchische Ansicht eines Baumes in einer XLSX-Datei in eine Baumdatenstruktur verwandeln könnte. Das Problem ist, dass trotz der gut gemachten Hierarchie die gegebene Datei voller Löcher ist ... wie ein Gruyere

Hier ist die Vorschau der Daten, die wir ganze finden können hier :https://drive.google.com/file/d/1CiarXi ... 5mV6UZqKqP

Bild

Und ein Beispiel im reduzierten Format:

Code: Alles auswählen

 SIC ,,,
,,,
Abteilung 1: Säugetiere ,,,
0100, felines ,,
0110, Katzen,
0111 ,,, Abessinier
0112 ,,, Aegan
0113 ,,, American Curl
0120, tiger,
0121 ,,, Indochinesischer Tiger
0122 ,,, Bengalischer Tiger
Abteilung 2: Reptilien ,,,
1100, crocodilians ,,
1110 ,, Krokodile,
1111 ,,, Cayman
1200 ,, Testudines
1210, Schildkröten,
1211 ,,, Kapuzinerkresse
Ich begann einen Pseudo-Code zu machen, aber ich denke, es ist nicht optimal ist ... Zumal der Datenrahmen Multiindex wir mich rutschten die effektiver waren, aber ich weiß nicht, m ​​' dienen. Eine andere Empfehlung von ElasticSearch, aber das gleiche ist mir zu neu.


from openpyx import load_workbook
import Pandas as pd

wb = load_workbook (Dateiname = 'Trees.xlsx')

Code: Alles auswählen

i = 0
div = 0
level = 0
AnzahlOfFullCells = 0
TypenSehen = []
for cell in wb ['Industrie'] ['A']:
    if "Division" in cell
         #Ich muss einen Vaterknoten erstellen
         Division + = 1
    if cell.type () == int:
        # Wenn die Zahl auf [Stufe 1] in den vierstelligen nicht gesehen worden ist ein Knoten Sohn
        if (cell [level +1] not in typeDejaVu):
            TypenSehen = TypenSehen + cell
            # Machen Sie ein Kind mit dem Inhalt direkt nach rechts
        # Sonst, wenn der Typ bereits gesehen wurde, sind wir in einen neuen Bereich umgezogen
        else if (die Nummer der Zelle auf der Ebene [level +1] in TypenSehen):
            TypenSehen = []
            % Machen Sie ein Kind mit dem
        # sonst stehen wir vor einer leeren Zelle
        else:
            AnzahlOfFullCells + 1
    if AnzahlOfFullCells >3:
         break
PS: Der Titel ist absichtlich etwas provokativ;), spiegelt aber dennoch das Wesen des Problems wider

Re: Wie man einen Baum aus einem Gruyère macht;) ?

Verfasst: Freitag 11. Mai 2018, 12:10
von Sirius3
@AntoineP: Du hast keinen Käse, sondern eine relativ einfach strukturierte Tabelle. Suche in jeder Zeile die Zelle, die am weitesten rechts liegt und Du erhältst als Ergebnis eine Liste [(ebene, wert),...].
In welche Datenstruktur Du diese Liste dann umwandelst, hängt dann davon ab, was Du mit dem Baum anfangen willst.

Re: Wie man einen Baum aus einem Gruyère macht;) ?

Verfasst: Sonntag 13. Mai 2018, 03:41
von RIN67630
AntoineP hat geschrieben: Freitag 11. Mai 2018, 01:09 ... die gegebene Datei voller Löcher ist ... wie ein Gruyere ...
Dumm nur, dass der echten Gruyère keine Löcher hat. :-P
SCNR.