Umgang mit doppelten Werten in einem Pandas-DataFrame

Umgang mit doppelten Werten in einem Pandas-DataFrame

Einleitung

Als Datenanalyst liegt es in unserer Verantwortung, die Datenintegrität sicherzustellen, um genaue und vertrauenswürdige Erkenntnisse zu erhalten. Die Datenbereinigung spielt in diesem Prozess eine entscheidende Rolle und doppelte Werte gehören zu den häufigsten Problemen, mit denen Datenanalysten konfrontiert werden. Doppelte Werte können Erkenntnisse möglicherweise falsch darstellen. Daher ist es von entscheidender Bedeutung, über effiziente Methoden zum Umgang mit doppelten Werten zu verfügen. In diesem Artikel erfahren Sie, wie Sie doppelte Werte identifizieren und handhaben sowie bewährte Methoden für die Verwaltung von Duplikaten.

Identifizieren doppelter Werte

Der erste Schritt beim Umgang mit doppelten Werten besteht darin, sie zu identifizieren. Das Identifizieren doppelter Werte ist ein wichtiger Schritt bei der Datenbereinigung. Pandas bietet mehrere Methoden zum Identifizieren doppelter Werte innerhalb eines Datenrahmens. In diesem Abschnitt werden wir das besprechen duplicated() Funktion und value_counts() Funktion zur Identifizierung doppelter Werte.

Usin dupliziert ()

Das duplicated() Funktion ist eine Pandas-Bibliotheksfunktion, die nach doppelten Zeilen in einem DataFrame sucht. Die Ausgabe der duplicated() Die Funktion ist eine boolesche Reihe mit der gleichen Länge wie der Eingabe-DataFrame, wobei jedes Element angibt, ob die entsprechende Zeile ein Duplikat ist oder nicht.

Betrachten wir ein einfaches Beispiel dafür duplicated() Funktion:

import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)

Ausgang:

0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool

Im obigen Beispiel haben wir einen DataFrame erstellt, der die Namen der Schüler und ihre Gesamtpunktzahl enthält. Wir haben angerufen duplicated() auf dem DataFrame, der eine boolesche Reihe mit generiert hat False die einzigartige Werte repräsentieren und True Darstellung doppelter Werte.

In diesem Beispiel wird das erste Vorkommen des Werts als eindeutig betrachtet. Was aber, wenn wir möchten, dass der letzte Wert als eindeutig gilt und wir bei der Identifizierung doppelter Werte nicht alle Spalten berücksichtigen möchten? Hier können wir die ändern duplicated() Funktion durch Ändern der Parameterwerte.

Parameter: Subset und Keep

Das duplicated() Die Funktion bietet Anpassungsoptionen durch ihre optionalen Parameter. Es verfügt über zwei Parameter, wie unten beschrieben:

  • subset: Mit diesem Parameter können wir die Teilmenge der Spalten angeben, die bei der Duplikaterkennung berücksichtigt werden sollen. Die Teilmenge wird auf gesetzt None standardmäßig, was bedeutet, dass jede Spalte im DataFrame berücksichtigt wird. Um Spaltennamen anzugeben, können wir der Teilmenge eine Liste von Spaltennamen bereitstellen.

    Hier ist ein Beispiel für die Verwendung des Subset-Parameters:

    
    df_duplicates = df.duplicated(subset=['StudentName'])
    

    Ausgang:

    0 False
    1 False
    2 False
    3 False
    4 False
    5 True
    dtype: bool
    
  • keep: Mit dieser Option können wir auswählen, welche Instanz der Duplikatzeile als Duplikat markiert werden soll. Die möglichen Werte für keep sind:

    • "first": Dies ist der Standardwert für keep Möglichkeit. Es identifiziert alle Duplikate mit Ausnahme des ersten Vorkommens und betrachtet den ersten Wert als eindeutig.
    • "last": Diese Option identifiziert das letzte Vorkommen als eindeutigen Wert. Alle anderen Vorkommen werden als Duplikate betrachtet.
    • False: Diese Option kennzeichnet jede Instanz als doppelten Wert.

Hier ist ein Beispiel für die Verwendung der keep Parameter:


df_duplicates = df.duplicated(keep='last')
print(df_duplicates)

Ausgang:

0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Visualisieren Sie doppelte Werte

Das value_counts() Die Funktion ist der zweite Ansatz zur Identifizierung von Duplikaten. Der value_counts() Die Funktion zählt, wie oft jeder eindeutige Wert in einer Spalte erscheint. Durch die Anwendung der value_counts() Wenn Sie die Funktion einer bestimmten Spalte zuordnen, kann die Häufigkeit jedes Werts visualisiert werden.

Hier ist ein Beispiel für die Verwendung der value_counts() Funktion:

import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)

Ausgang:

Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64

Lassen Sie uns nun doppelte Werte mit einem Balkendiagramm visualisieren. Mithilfe eines Balkendiagramms können wir die Häufigkeit doppelter Werte effektiv visualisieren.


name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()

doppelte Werte

Umgang mit doppelten Werten

Nachdem Sie doppelte Werte identifiziert haben, ist es an der Zeit, sie zu beheben. In diesem Abschnitt werden wir verschiedene Strategien zum Entfernen und Aktualisieren doppelter Werte mithilfe der Pandas untersuchen drop_duplicates() und replace() Funktionen. Darüber hinaus besprechen wir die Aggregation von Daten mit doppelten Werten mithilfe von groupby() Funktion.

Entfernen doppelter Werte

Der gängigste Ansatz zum Umgang mit Duplikaten besteht darin, sie aus dem DataFrame zu entfernen. Um doppelte Datensätze aus dem DataFrame zu entfernen, verwenden wir die drop_duplicates() Funktion. Standardmäßig behält diese Funktion die erste Instanz jeder doppelten Zeile bei und entfernt die nachfolgenden Vorkommen. Es identifiziert doppelte Werte basierend auf allen Spaltenwerten. Wir können jedoch die zu berücksichtigende Spalte mithilfe von Teilmengenparametern angeben.

Syntax von drop_duplicates() mit Standardwerten in Parametern ist wie folgt:

dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

Das subset und keep Parameter haben die gleiche Erklärung wie in duplicates(). Wenn wir den dritten Parameter festlegen inplace zu True, werden alle Änderungen direkt am ursprünglichen DataFrame durchgeführt, was dazu führt, dass die Methode zurückkehrt None und der ursprüngliche DataFrame wird geändert. Standardmäßig, inplace is False.

Hier ist ein Beispiel für die drop_duplicates() Funktion:


df.drop_duplicates(keep='last', inplace=True)
print(df)

Ausgang:

 StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!

Im obigen Beispiel wurde der erste Eintrag gelöscht, da es sich um ein Duplikat handelte.

Ersetzen oder aktualisieren Sie doppelte Werte

Die zweite Methode zum Umgang mit Duplikaten besteht darin, den Wert mithilfe der Pandas zu ersetzen replace() Funktion. Das replace() Mit der Funktion können wir bestimmte Werte oder Muster in einem DataFrame durch neue Werte ersetzen. Standardmäßig werden alle Instanzen des Werts ersetzt. Durch die Verwendung des Parameters limit können wir jedoch die Anzahl der Ersetzungen einschränken.

Hier ist ein Beispiel für die Verwendung von replace() Funktion:


df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)

Ausgang:

 StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Hier wurde der Grenzwert verwendet, um den ersten Wert zu ersetzen. Was ist, wenn wir das letzte Vorkommen ersetzen möchten? In diesem Fall kombinieren wir die duplicated() und replace() Funktionen. Verwenden von duplicated(), geben wir die letzte Instanz jedes doppelten Werts an und ermitteln die Zeilennummer mithilfe von loc Funktion und ersetzen Sie sie dann durch die replace() Funktion. Hier ist ein Beispiel für die Verwendung duplicated() und replace() Funktionen zusammen.


last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)

Ausgang:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45

Benutzerdefinierte Funktionen für komplexe Ersetzungen

In manchen Fällen erfordert der Umgang mit doppelten Werten komplexere Ersetzungen als das bloße Entfernen oder Aktualisieren. Benutzerdefinierte Funktionen ermöglichen es uns, spezifische Ersetzungsregeln zu erstellen, die auf unsere Bedürfnisse zugeschnitten sind. Durch die Nutzung der Pandas apply() Funktion können wir die benutzerdefinierte Funktion auf unsere Daten anwenden.

Nehmen wir beispielsweise an, dass die Spalte „StudentName“ doppelte Namen enthält. Unser Ziel ist es, Duplikate durch eine benutzerdefinierte Funktion zu ersetzen, die am Ende doppelter Werte eine Zahl anfügt und sie so einzigartig macht.


def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)

Ausgang:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45

Aggregieren Sie Daten mit doppelten Werten

Daten mit doppelten Werten können aggregiert werden, um die Daten zusammenzufassen und daraus Erkenntnisse zu gewinnen. Die Pandas groupby() Mit der Funktion können Sie Daten mit doppelten Werten aggregieren. Durch die Verwendung der groupby() Mit der Funktion können Sie eine oder mehrere Spalten gruppieren und für jede Gruppe den Mittelwert, den Median oder die Summe einer anderen Spalte berechnen.

Hier ist ein Beispiel für die Verwendung von groupby() Verfahren:


grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)

Ausgang:

 Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90

Fortgeschrittene Techniken

Um komplexere Szenarien zu bewältigen und eine genaue Analyse sicherzustellen, können wir einige fortschrittliche Techniken verwenden. In diesem Abschnitt wird der Umgang mit Fuzzy-Duplikaten, Duplikaten in Zeitreihendaten und doppelten Indexwerten erläutert.

Fuzzy Duplicates

Fuzzy-Duplikate sind Datensätze, bei denen es sich nicht um exakte Übereinstimmungen handelt, die aber ähnlich sind. Sie können aus verschiedenen Gründen auftreten, einschließlich Dateneingabefehlern, Rechtschreibfehlern und Abweichungen in der Formatierung. Wir werden das verwenden fuzzywuzzy Python-Bibliothek zur Identifizierung von Duplikaten mithilfe des String-Ähnlichkeitsabgleichs.

Hier ist ein Beispiel für den Umgang mit Fuzzy-Werten:

import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))

In diesem Beispiel erstellen wir eine benutzerdefinierte Funktion find_fuzzy_duplicates das einen DataFrame, einen Spaltennamen und einen Ähnlichkeitsschwellenwert als Eingabe verwendet. Die Funktion durchläuft jede Zeile im DataFrame und vergleicht sie mithilfe von mit nachfolgenden Zeilen fuzz.ratio Methode aus dem fuzzywuzzy Bibliothek. Wenn der Ähnlichkeitswert größer oder gleich dem Schwellenwert ist, werden die doppelten Zeilen einer Liste hinzugefügt. Schließlich gibt die Funktion einen DataFrame zurück, der die Fuzzy-Duplikate enthält.

Ausgang:

Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39

Im obigen Beispiel werden Fuzzy-Duplikate in der Spalte „StudentName“ identifiziert. Die Funktion „find_fuzzy_duplicates“ vergleicht jedes Zeichenfolgenpaar mithilfe der fuzzywuzzy Bibliothek fuzz.ratio Funktion, die einen Ähnlichkeitswert basierend auf der Levenshtein-Distanz berechnet. Wir haben den Schwellenwert auf 70 festgelegt, was bedeutet, dass jeder Name mit einem Übereinstimmungsverhältnis von mehr als 70 als Fuzzy-Wert betrachtet wird. Nachdem wir Fuzzy-Werte identifiziert haben, können wir sie mit der im Abschnitt „Umgang mit Duplikaten“ beschriebenen Methode verwalten.

Umgang mit Duplikaten von Zeitreihendaten

Duplikate können auftreten, wenn mehrere Beobachtungen mit demselben Zeitstempel aufgezeichnet werden. Diese Werte können bei unsachgemäßer Handhabung zu verzerrten Ergebnissen führen. Hier sind einige Möglichkeiten, mit doppelten Werten in Zeitreihendaten umzugehen.

  • Löschen exakter Duplikate: Bei dieser Methode entfernen wir identische Zeilen mithilfe von drop_duplicates Funktion in Pandas.
  • Doppelte Zeitstempel mit unterschiedlichen Werten: Wenn wir den gleichen Zeitstempel, aber unterschiedliche Werte haben, können wir die Daten aggregieren und mehr Erkenntnisse gewinnen groupby(), oder wir können den aktuellsten Wert auswählen und die anderen mit entfernen drop_duplicates() an. Nach der Installation können Sie HEIC-Dateien mit der keep Parameter auf „last“ gesetzt.

Umgang mit doppelten Indexwerten

Bevor wir uns mit doppelten Indexwerten befassen, definieren wir zunächst, was ein Index in Pandas ist. Ein Index ist eine eindeutige Kennung, die jeder Zeile des DataFrame zugewiesen wird. Pandas weist standardmäßig einen numerischen Index zu, der bei Null beginnt. Ein Index kann jedoch jeder Spalte oder Spaltenkombination zugewiesen werden. Um Duplikate in der Indexspalte zu identifizieren, können wir die verwenden duplicated() und drop_duplicates() Funktionen bzw. In diesem Abschnitt erfahren Sie, wie Sie mit Duplikaten in der Indexspalte umgehen reset_index().

Wie der Name schon sagt, ist die reset_index() Die Funktion in Pandas wird verwendet, um den Index eines DataFrames zurückzusetzen. Bei der Anwendung der reset_index() Funktion wird der aktuelle Index automatisch verworfen, was bedeutet, dass die anfänglichen Indexwerte verloren gehen. Durch die Angabe der drop Parameter als False der reset_index() Mit dieser Funktion können wir den ursprünglichen Indexwert beibehalten und gleichzeitig den Index zurücksetzen.

Hier ist ein Beispiel für die Verwendung reset_index():

import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)

Ausgang:

 index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Praxisbeispiele

  • Verstehen Sie die Natur doppelter Daten: Bevor Sie Maßnahmen ergreifen, ist es wichtig zu verstehen, warum doppelte Werte vorhanden sind und was sie darstellen. Identifizieren Sie die Grundursache und legen Sie dann die geeigneten Schritte fest, um sie zu beheben.

  • Wählen Sie eine geeignete Methode für den Umgang mit Duplikaten: Wie in den vorherigen Abschnitten erläutert, gibt es mehrere Möglichkeiten, mit Duplikaten umzugehen. Welche Methode Sie wählen, hängt von der Art der Daten und der Analyse ab, die Sie durchführen möchten.

  • Dokumentieren Sie den Ansatz: Es ist wichtig, den Prozess zur Erkennung doppelter Werte und deren Behebung zu dokumentieren, damit andere den Denkprozess verstehen können.

  • Übung Vorsicht: Wann immer wir Daten entfernen oder ändern, müssen wir sicherstellen, dass die Beseitigung von Duplikaten nicht zu Fehlern oder Verzerrungen in der Analyse führt. Führen Sie Gesundheitstests durch und validieren Sie die Ergebnisse jeder Aktion.

  • Behalten Sie die Originaldaten bei: Erstellen Sie vor dem Durchführen jeglicher Datenoperationen eine Sicherungskopie der Originaldaten.

  • Verhindern Sie zukünftige Duplikate: Maßnahmen ergreifen, um zu verhindern, dass es in Zukunft zu Duplikaten kommt. Dies kann die Datenvalidierung während der Dateneingabe, Datenbereinigungsroutinen oder Datenbankeinschränkungen zur Durchsetzung der Eindeutigkeit umfassen.

Abschließende Überlegungen

Bei der Datenanalyse ist die Beseitigung doppelter Werte ein entscheidender Schritt. Doppelte Werte können zu ungenauen Ergebnissen führen. Durch die effiziente Identifizierung und Verwaltung doppelter Werte können Datenanalysten präzise und aussagekräftige Informationen ableiten. Durch die Implementierung der genannten Techniken und die Befolgung von Best Practices können Analysten die Integrität ihrer Daten wahren und daraus wertvolle Erkenntnisse gewinnen.

Zeitstempel:

Mehr von Stapelmissbrauch