Python Excel Vergleich Werte

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
servus_97
User
Beiträge: 24
Registriert: Donnerstag 3. September 2020, 12:01

Also schlägst du vor mit einer anderen Bibliothek die Daten einzulesen ?

Wie bspw. openpyxl
servus_97
User
Beiträge: 24
Registriert: Donnerstag 3. September 2020, 12:01

Also schlägst du vor mit einer anderen Bibliothek die Daten einzulesen ?

Wie bspw. openpyxl
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

servus_97 hat geschrieben: Dienstag 13. Juli 2021, 10:50 Würde ich jedoch den ersten Ansatz nehmen, so könnte man auch "nltk.edit_distance()" verwenden.
Du hast dich jetzt schon für einen anderen Ansatz entschieden, wenn ich das korrekt verstanden habe, aber mal der Vollständigkeit halber:

'nltk.edit_distance' ist nur mit Einschränkung zu empfehlen. Das verwendet, soweit ich das sehe, die "Lehrbuchimplementierung" mit Dynamic Programming und ist in reinem Python geschrieben. Für kleine Mengen und zum Rumspielen ist das okay. Aber wenn Performance wichtig ist, würde ich das nicht empfehlen. In der Fachliteratur wurden diverse Verbesserungen der Zeichenkettendistanz beschrieben. Auf Pypi findet man eine handvoll Implementierungen, die in C, C++ und/oder Cython implementiert sind und zumindest teilweise einige dieser optimierten Algorithmen einsetzen. Wenn es um größere Datenmengen, d.h. viele Vergleiche geht, würde ich daher dort schauen und dann die Implementierung nehmen, die für dich am besten funktioniert.
servus_97
User
Beiträge: 24
Registriert: Donnerstag 3. September 2020, 12:01

Habe es doch geschafft, indem ich einfach die zu betrachtende Spalte ausgewählt und dann habe ich einfach

Code: Alles auswählen

x = df_correct['name'].to_string().splitlines()
in eine Variable gespeichert. Auch für den zweiten Excel Sheet.

Jetzt hatte ich extra einige Buchstaben für Testzwecke entfernt und habe den Code abgespielt.

Jetzt bekommen ich überall
Nike | 1 | Ni
die Wahrscheinlichkeit 1.
D.h. der Algorithmus erkennt Ni mit 100% WK als Nike an ?

Und wie könnte ich jetzt einfach, in dem Fall, Ni als Nike ändern ?
LukeNukem
User
Beiträge: 232
Registriert: Mittwoch 19. Mai 2021, 03:40

servus_97 hat geschrieben: Sonntag 18. Juli 2021, 16:25 Jetzt bekommen ich überall
Nike | 1 | Ni
die Wahrscheinlichkeit 1.
D.h. der Algorithmus erkennt Ni mit 100% WK als Nike an ?
...unter den gegebenen Auswahlmöglichkeiten, genau. Wenn Du meinen Code benutzt hast, sind das natürlich 100%, denn die Anzahl der korrekten Möglichkeiten ist mit 2 ja sehr überschaubar, und die beiden Namen "Nike" und "Bosch AG" unterscheiden sich ja dann doch sehr deutlich.
servus_97 hat geschrieben: Sonntag 18. Juli 2021, 16:25 Und wie könnte ich jetzt einfach, in dem Fall, Ni als Nike ändern ?
Ich würde dem DataFrame zu Kontrollzwecken zwei neue Spalten hinzufügen, so im Kern (ungetestet):

Code: Alles auswählen

def predict_name(val): 
    # Korrekten Namen 'name' und Wahrscheinlichkeit 'prob' berechnen
    return pd.Series({'name': name, 'prob': prob})

df[['name', 'prob']] = df.Marken.apply(predict_name, axis=1)
Danach würde ich mir die drei Spalten mal nebeneinander ausgeben lassen und das Ergebnis manuell überprüfen. HTH, have fun! ;-)
Antworten