
Python in RevOps: So aktualisieren Sie Ihr CRM und vermeiden Dubletten
Erfahren Sie anhand einer Kundenreferenz, wie Python RevOps-Aufgaben wie CRM-Aktualisierungen und Dublettenbereinigung vereinfachen kann.

Haris Odobasic
Python kann in Revenue Operations hilfreich sein. Ich nutze es gern, wenn ich mit Daten arbeiten muss.
Problem: 300 Millionen Paare überprüfen
Kürzlich mussten wir eine Liste mit 30.000 Accounts mit einem CRM abgleichen, das bereits 10.000 Accounts enthielt. Sie können sich vorstellen, dass es jede Menge Dubletten gab.
Das Hauptproblem: Im CRM wurde häufig der Markenname (The Lego Group) statt des rechtlichen Unternehmensnamens (Lego A/S) verwendet. Die neue Datei enthielt ausschließlich rechtliche Unternehmensnamen. Ärgerlich.
Wir müssen also 300 Millionen mögliche Paare vergleichen. Das bringt grafische Tools wie Excel oder Google Sheets zum Absturz – zumindest war es bei mir so.
Tipp: Bevor Sie Daten in Ihr CRM importieren, sollten Sie sicherstellen, dass Ihr Datensatz in bestmöglichem Zustand ist. Sobald die Daten im CRM sind, werden Korrekturen deutlich zeitaufwendiger und damit teurer.
Lösung: Python & ChatGPT helfen weiter
Lassen Sie mich raten: Python klingt einschüchternd? Das dachte ich auch! Meine Programmierkenntnisse sind alles andere als gut. Heute ist der Einstieg einfacher denn je, und ChatGPT verändert die Möglichkeiten grundlegend. In wenigen Monaten lässt sich genügend Wissen aufbauen, um Python für geschäftliche Anwendungsfälle wie Fuzzy Matching einzusetzen.
Vorgehen
Sie benötigen die beiden Quelldateien, die abgeglichen werden sollen. In unserem Fall:
file1 – Quelldaten aus dem CRM mit Datensatz-ID
file2 – neue Daten vom Datenanbieter
Tipp: Stellen Sie sicher, dass keine der beiden Dateien selbst Dubletten enthält!
Abgleichvariable
Als Nächstes benötigt jede Datei ein Abgleichkriterium. In unserem Beispiel haben beide ein Feld namens „Account Name“.
Ordnerstruktur
Legen Sie beide Dateien zusammen mit dem Skript im selben Ordner ab. Dort werden später auch die Ergebnisse gespeichert.

Fuzzy Matching
Fuzzy Matching ist eine Methode zum ungefähren Abgleichen von Zeichenfolgen. Einfach gesagt: Sie gleicht ähnliche Wörter ab. Wie im Bild:

Hier finden Sie eine ausführliche Erklärung des Konzepts.
Für unsere Zwecke müssen Sie nur wissen, dass wir für einen Fuzzy-Abgleich einen Übereinstimmungsprozentsatz festlegen müssen. Der Prozentsatz gibt die maximale Ähnlichkeit der Wörter an. Beispiele:
Ist er zu hoch, etwa 97 %, übersehen Sie Übereinstimmungen.
Ist er zu niedrig, etwa 84 %, steigt die Wahrscheinlichkeit falscher Zuordnungen.
Bewährt haben sich Werte zwischen 95 und 90 %. Beachten Sie die 90 im Code. Mit diesem Wert sollten Sie experimentieren.
# Performing the fuzzy matching
dict_list = []
for name in df3['Account Name']:
match = match_name(name, df4['Accont Name'], 90)Sie können auch unter 90 gehen. Dann würde ich jedoch einige Testläufe durchführen und die Daten manuell auf ungewöhnliche Zuordnungen prüfen. Es hängt alles von Ihren Quelldaten ab.
Vollständiger Code
Unten finden Sie das vollständige Skript. Sie müssen nur wenige Anpassungen vornehmen:
Passen Sie den Dateipfad jeder Datei an.
Ersetzen Sie die Abgleichvariable, in diesem Beispiel 'Account Name'.
Legen Sie den Prozentsatz für Fuzzy Matching fest.
Nach dem Start des Codes kann die Ausführung einige Minuten dauern.
Ich hoffe, das war hilfreich! Mir hat es unzählige Arbeitsstunden und die Investition in ein zusätzliches Tool zur Lösung des Problems erspart.
import pandas as pd
from fuzzywuzzy import fuzz, process
# Function to match name using fuzzy matching
def match_name(name, list_names, min_score=0):
max_score = -1
max_name = ""
for name2 in list_names:
score = fuzz.ratio(name, name2)
if (score > min_score) & (score > max_score):
max_name = name2
max_score = score
return max_name, max_score
# Reading the data - insert your file structure in there
df3 = pd.read_csv('/Users/harisodobasic/Projects/duplication/file1', encoding='ISO-8859-1')
df4 = pd.read_csv('/Users/harisodobasic/Projects/duplication/file2', encoding='ISO-8859-1')
# Convert the 'Account Name' (insert here your matching variable) columns to strings (had to be done as in some cases strange strings in were in the name)
df3['Account Name'] = df3['Account Name'].apply(lambda x: str(x) if not pd.isnull(x) else '')
df4['Accont Name'] = df4['Accont Name'].apply(lambda x: str(x) if not pd.isnull(x) else '')
# Performing the fuzzy matching
dict_list = []
for name in df3['Account Name']:
match = match_name(name, df4['Accont Name'], 90)
dict_ = {
"Account_Name_df3": name,
"match_name_df4": match[0],
"score": match[1]
}
dict_list.append(dict_)
merge_table = pd.DataFrame(dict_list)
# Merging the fuzzy match results with the original data from df3
final_data = pd.merge(merge_table, df3, how='left', left_on='Account_Name_df3', right_on='Account Name')
# Merging the above result with df4 using an 'outer' join to include unmatched rows from df4
final_data = pd.merge(final_data, df4, how='outer', left_on='match_name_df4', right_on='Accont Name')
# Removing redundant columns
final_data.drop(columns=['Account_Name_df3', 'match_name_df4'], inplace=True)
# Exporting the result to a CSV file
final_data.to_csv('result.csv', index=False)
print("Fuzzy matching completed and results saved to 'result.csv'")Python kann in Revenue Operations hilfreich sein. Ich nutze es gern, wenn ich mit Daten arbeiten muss.
Problem: 300 Millionen Paare überprüfen
Kürzlich mussten wir eine Liste mit 30.000 Accounts mit einem CRM abgleichen, das bereits 10.000 Accounts enthielt. Sie können sich vorstellen, dass es jede Menge Dubletten gab.
Das Hauptproblem: Im CRM wurde häufig der Markenname (The Lego Group) statt des rechtlichen Unternehmensnamens (Lego A/S) verwendet. Die neue Datei enthielt ausschließlich rechtliche Unternehmensnamen. Ärgerlich.
Wir müssen also 300 Millionen mögliche Paare vergleichen. Das bringt grafische Tools wie Excel oder Google Sheets zum Absturz – zumindest war es bei mir so.
Tipp: Bevor Sie Daten in Ihr CRM importieren, sollten Sie sicherstellen, dass Ihr Datensatz in bestmöglichem Zustand ist. Sobald die Daten im CRM sind, werden Korrekturen deutlich zeitaufwendiger und damit teurer.
Lösung: Python & ChatGPT helfen weiter
Lassen Sie mich raten: Python klingt einschüchternd? Das dachte ich auch! Meine Programmierkenntnisse sind alles andere als gut. Heute ist der Einstieg einfacher denn je, und ChatGPT verändert die Möglichkeiten grundlegend. In wenigen Monaten lässt sich genügend Wissen aufbauen, um Python für geschäftliche Anwendungsfälle wie Fuzzy Matching einzusetzen.
Vorgehen
Sie benötigen die beiden Quelldateien, die abgeglichen werden sollen. In unserem Fall:
file1 – Quelldaten aus dem CRM mit Datensatz-ID
file2 – neue Daten vom Datenanbieter
Tipp: Stellen Sie sicher, dass keine der beiden Dateien selbst Dubletten enthält!
Abgleichvariable
Als Nächstes benötigt jede Datei ein Abgleichkriterium. In unserem Beispiel haben beide ein Feld namens „Account Name“.
Ordnerstruktur
Legen Sie beide Dateien zusammen mit dem Skript im selben Ordner ab. Dort werden später auch die Ergebnisse gespeichert.

Fuzzy Matching
Fuzzy Matching ist eine Methode zum ungefähren Abgleichen von Zeichenfolgen. Einfach gesagt: Sie gleicht ähnliche Wörter ab. Wie im Bild:

Hier finden Sie eine ausführliche Erklärung des Konzepts.
Für unsere Zwecke müssen Sie nur wissen, dass wir für einen Fuzzy-Abgleich einen Übereinstimmungsprozentsatz festlegen müssen. Der Prozentsatz gibt die maximale Ähnlichkeit der Wörter an. Beispiele:
Ist er zu hoch, etwa 97 %, übersehen Sie Übereinstimmungen.
Ist er zu niedrig, etwa 84 %, steigt die Wahrscheinlichkeit falscher Zuordnungen.
Bewährt haben sich Werte zwischen 95 und 90 %. Beachten Sie die 90 im Code. Mit diesem Wert sollten Sie experimentieren.
# Performing the fuzzy matching
dict_list = []
for name in df3['Account Name']:
match = match_name(name, df4['Accont Name'], 90)Sie können auch unter 90 gehen. Dann würde ich jedoch einige Testläufe durchführen und die Daten manuell auf ungewöhnliche Zuordnungen prüfen. Es hängt alles von Ihren Quelldaten ab.
Vollständiger Code
Unten finden Sie das vollständige Skript. Sie müssen nur wenige Anpassungen vornehmen:
Passen Sie den Dateipfad jeder Datei an.
Ersetzen Sie die Abgleichvariable, in diesem Beispiel 'Account Name'.
Legen Sie den Prozentsatz für Fuzzy Matching fest.
Nach dem Start des Codes kann die Ausführung einige Minuten dauern.
Ich hoffe, das war hilfreich! Mir hat es unzählige Arbeitsstunden und die Investition in ein zusätzliches Tool zur Lösung des Problems erspart.
import pandas as pd
from fuzzywuzzy import fuzz, process
# Function to match name using fuzzy matching
def match_name(name, list_names, min_score=0):
max_score = -1
max_name = ""
for name2 in list_names:
score = fuzz.ratio(name, name2)
if (score > min_score) & (score > max_score):
max_name = name2
max_score = score
return max_name, max_score
# Reading the data - insert your file structure in there
df3 = pd.read_csv('/Users/harisodobasic/Projects/duplication/file1', encoding='ISO-8859-1')
df4 = pd.read_csv('/Users/harisodobasic/Projects/duplication/file2', encoding='ISO-8859-1')
# Convert the 'Account Name' (insert here your matching variable) columns to strings (had to be done as in some cases strange strings in were in the name)
df3['Account Name'] = df3['Account Name'].apply(lambda x: str(x) if not pd.isnull(x) else '')
df4['Accont Name'] = df4['Accont Name'].apply(lambda x: str(x) if not pd.isnull(x) else '')
# Performing the fuzzy matching
dict_list = []
for name in df3['Account Name']:
match = match_name(name, df4['Accont Name'], 90)
dict_ = {
"Account_Name_df3": name,
"match_name_df4": match[0],
"score": match[1]
}
dict_list.append(dict_)
merge_table = pd.DataFrame(dict_list)
# Merging the fuzzy match results with the original data from df3
final_data = pd.merge(merge_table, df3, how='left', left_on='Account_Name_df3', right_on='Account Name')
# Merging the above result with df4 using an 'outer' join to include unmatched rows from df4
final_data = pd.merge(final_data, df4, how='outer', left_on='match_name_df4', right_on='Accont Name')
# Removing redundant columns
final_data.drop(columns=['Account_Name_df3', 'match_name_df4'], inplace=True)
# Exporting the result to a CSV file
final_data.to_csv('result.csv', index=False)
print("Fuzzy matching completed and results saved to 'result.csv'")Python kann in Revenue Operations hilfreich sein. Ich nutze es gern, wenn ich mit Daten arbeiten muss.
Problem: 300 Millionen Paare überprüfen
Kürzlich mussten wir eine Liste mit 30.000 Accounts mit einem CRM abgleichen, das bereits 10.000 Accounts enthielt. Sie können sich vorstellen, dass es jede Menge Dubletten gab.
Das Hauptproblem: Im CRM wurde häufig der Markenname (The Lego Group) statt des rechtlichen Unternehmensnamens (Lego A/S) verwendet. Die neue Datei enthielt ausschließlich rechtliche Unternehmensnamen. Ärgerlich.
Wir müssen also 300 Millionen mögliche Paare vergleichen. Das bringt grafische Tools wie Excel oder Google Sheets zum Absturz – zumindest war es bei mir so.
Tipp: Bevor Sie Daten in Ihr CRM importieren, sollten Sie sicherstellen, dass Ihr Datensatz in bestmöglichem Zustand ist. Sobald die Daten im CRM sind, werden Korrekturen deutlich zeitaufwendiger und damit teurer.
Lösung: Python & ChatGPT helfen weiter
Lassen Sie mich raten: Python klingt einschüchternd? Das dachte ich auch! Meine Programmierkenntnisse sind alles andere als gut. Heute ist der Einstieg einfacher denn je, und ChatGPT verändert die Möglichkeiten grundlegend. In wenigen Monaten lässt sich genügend Wissen aufbauen, um Python für geschäftliche Anwendungsfälle wie Fuzzy Matching einzusetzen.
Vorgehen
Sie benötigen die beiden Quelldateien, die abgeglichen werden sollen. In unserem Fall:
file1 – Quelldaten aus dem CRM mit Datensatz-ID
file2 – neue Daten vom Datenanbieter
Tipp: Stellen Sie sicher, dass keine der beiden Dateien selbst Dubletten enthält!
Abgleichvariable
Als Nächstes benötigt jede Datei ein Abgleichkriterium. In unserem Beispiel haben beide ein Feld namens „Account Name“.
Ordnerstruktur
Legen Sie beide Dateien zusammen mit dem Skript im selben Ordner ab. Dort werden später auch die Ergebnisse gespeichert.

Fuzzy Matching
Fuzzy Matching ist eine Methode zum ungefähren Abgleichen von Zeichenfolgen. Einfach gesagt: Sie gleicht ähnliche Wörter ab. Wie im Bild:

Hier finden Sie eine ausführliche Erklärung des Konzepts.
Für unsere Zwecke müssen Sie nur wissen, dass wir für einen Fuzzy-Abgleich einen Übereinstimmungsprozentsatz festlegen müssen. Der Prozentsatz gibt die maximale Ähnlichkeit der Wörter an. Beispiele:
Ist er zu hoch, etwa 97 %, übersehen Sie Übereinstimmungen.
Ist er zu niedrig, etwa 84 %, steigt die Wahrscheinlichkeit falscher Zuordnungen.
Bewährt haben sich Werte zwischen 95 und 90 %. Beachten Sie die 90 im Code. Mit diesem Wert sollten Sie experimentieren.
# Performing the fuzzy matching
dict_list = []
for name in df3['Account Name']:
match = match_name(name, df4['Accont Name'], 90)Sie können auch unter 90 gehen. Dann würde ich jedoch einige Testläufe durchführen und die Daten manuell auf ungewöhnliche Zuordnungen prüfen. Es hängt alles von Ihren Quelldaten ab.
Vollständiger Code
Unten finden Sie das vollständige Skript. Sie müssen nur wenige Anpassungen vornehmen:
Passen Sie den Dateipfad jeder Datei an.
Ersetzen Sie die Abgleichvariable, in diesem Beispiel 'Account Name'.
Legen Sie den Prozentsatz für Fuzzy Matching fest.
Nach dem Start des Codes kann die Ausführung einige Minuten dauern.
Ich hoffe, das war hilfreich! Mir hat es unzählige Arbeitsstunden und die Investition in ein zusätzliches Tool zur Lösung des Problems erspart.
import pandas as pd
from fuzzywuzzy import fuzz, process
# Function to match name using fuzzy matching
def match_name(name, list_names, min_score=0):
max_score = -1
max_name = ""
for name2 in list_names:
score = fuzz.ratio(name, name2)
if (score > min_score) & (score > max_score):
max_name = name2
max_score = score
return max_name, max_score
# Reading the data - insert your file structure in there
df3 = pd.read_csv('/Users/harisodobasic/Projects/duplication/file1', encoding='ISO-8859-1')
df4 = pd.read_csv('/Users/harisodobasic/Projects/duplication/file2', encoding='ISO-8859-1')
# Convert the 'Account Name' (insert here your matching variable) columns to strings (had to be done as in some cases strange strings in were in the name)
df3['Account Name'] = df3['Account Name'].apply(lambda x: str(x) if not pd.isnull(x) else '')
df4['Accont Name'] = df4['Accont Name'].apply(lambda x: str(x) if not pd.isnull(x) else '')
# Performing the fuzzy matching
dict_list = []
for name in df3['Account Name']:
match = match_name(name, df4['Accont Name'], 90)
dict_ = {
"Account_Name_df3": name,
"match_name_df4": match[0],
"score": match[1]
}
dict_list.append(dict_)
merge_table = pd.DataFrame(dict_list)
# Merging the fuzzy match results with the original data from df3
final_data = pd.merge(merge_table, df3, how='left', left_on='Account_Name_df3', right_on='Account Name')
# Merging the above result with df4 using an 'outer' join to include unmatched rows from df4
final_data = pd.merge(final_data, df4, how='outer', left_on='match_name_df4', right_on='Accont Name')
# Removing redundant columns
final_data.drop(columns=['Account_Name_df3', 'match_name_df4'], inplace=True)
# Exporting the result to a CSV file
final_data.to_csv('result.csv', index=False)
print("Fuzzy matching completed and results saved to 'result.csv'")Bleiben Sie mit unserem Revenue-Blog auf dem Laufenden
Bleiben Sie mit unserem Revenue-Blog auf dem Laufenden
Alle Beiträge ansehen

Wenn ARR-Reporting nicht mehr funktioniert: Warum individuelle Snapshots sinnvoll sind
28.09.2026
Warum CRM-eigenes ARR-Reporting bei Mehrjahresverträgen scheitert und wie eine individuelle Snapshot-Ebene eine ARR-Wasserfallanalyse schafft, der die Finanzabteilung wirklich vertrauen kann.

KI-Preismodelle: Die versteckten Kosten kreditbasierter Abrechnung
18.09.2026
Wie KI-Preismodelle wirklich funktionieren, warum guthabenbasierte Abrechnung schwer vorherzusagen ist und was Käufer vor der Unterschrift verlangen sollten.

Die 7 besten B2B-SaaS-Marketingagenturen für mehr Pipeline (2026)
01.06.2026
Die 7 besten B2B-SaaS-Marketingagenturen im Jahr 2026 – mit realen Preisen, ehrlichen Grenzen und einer klaren Antwort darauf, welchen Teil Ihres Umsatzsystems jede Agentur tatsächlich verbessert.
Mehr laden
Gespräch vereinbaren
Termin auswählen

