Bei der Datenanalyse wird häufig mit unvollständigen Datensätzen gearbeitet, in denen einige Werte fehlen oder undefiniert sein können. In der Pandas-Bibliothek von Python können fehlende Werte in verschiedenen Formen auftreten, hauptsächlich als NaN
(Keine Zahl), None
, und NA
. Für eine effektive Datenmanipulation und -analyse ist es entscheidend zu verstehen, wie mit diesen fehlenden Werten umzugehen ist. In diesem Blogbeitrag werden die verschiedenen Arten fehlender Werte in Pandas, ihre Auswirkungen und verschiedene Methoden zu ihrer Behandlung untersucht.
Fehlende Werte können verschiedene Ursachen haben, z. B. Fehler bei der Datenerfassung, nicht erfasste Einträge oder das Entfernen von Ausreißern. In Pandas werden fehlende Werte normalerweise folgendermaßen dargestellt:
None
verwendet werden .NaN
NA
ist ein dedizierter Skalar für fehlende Werte in einer Datenstruktur. Im Gegensatz zu NaN
, das ein Float ist, NA
kann es für Ganzzahlen und andere Datentypen verwendet werden, was es vielseitiger macht.NaN
ist es ein Platzhalter für fehlende Zeitstempel.Bevor Sie fehlende Werte behandeln, müssen Sie deren Vorhandensein in Ihrem Datensatz identifizieren. Pandas bietet mehrere Funktionen zum Erkennen fehlender Werte:
True
nicht fehlende Werte zurück.Hier ist ein einfaches Beispiel:
import pandas as pd
import numpy as np
data ={
'A': [1, 2, np.nan, 4],
'B': [None, 'text', 'more text', 'even more text'],
'c': pd.to_datetime(['2021-01-01', None, '2021-01-03', '2021-01-04']),
'D': pd.array([1, 2, pd.NA, 4], dtype='Int64') # Using Pandas NA
}
df = pd.DataFrame(data){
# Check for missing values
print(df.isna())
Die Ausgabe gibt an, welche Werte im gesamten DataFrame fehlen.
Nachdem Sie fehlende Werte identifiziert haben, müssen Sie im nächsten Schritt entscheiden, wie Sie mit ihnen umgehen. Der von Ihnen gewählte Ansatz kann Ihre Analyse erheblich beeinflussen. Hier sind gängige Strategien:
Wenn der Anteil fehlender Werte gering ist, können Sie diese mit der folgenden Funktion aus Ihrem Datensatz entfernen dropna()
:
# Drop rows with any missing values
cleaned_df = df.dropna()
Sie können auch angeben how='all'
, dass Zeilen gelöscht werden sollen, in denen alle Werte fehlen, oder subset
dass bestimmte Spalten als Ziel ausgewählt werden sollen.
In vielen Fällen ist das Entfernen fehlender Werte nicht möglich. Stattdessen können Sie diese mithilfe der fillna()
Funktion füllen. Diese Methode ermöglicht verschiedene Strategien:
df['A'] = df['A'].fillna(0) # Replace NaN in column A with 0
df['B'] = df['B'].fillna(method='ffill')
df['C'] = df['C'].fillna(method='bfill')
df['A'] = df['A'].fillna(df['A'].mean())
NA
, können Sie dies direkt tun:
df['D'] = df['D'].fillna(pd.NA)
Manchmal kann domänenspezifisches Wissen Sie dazu veranlassen, fehlende Werte durch benutzerdefinierte Werte zu ersetzen. Dies kann insbesondere bei kategorialen Daten nützlich sein:
df['B'] = df['B'].fillna('Unknown') # Fill missing string values with 'Unknown'
Für Zeitreihendaten oder numerische Daten, bei denen erwartet wird, dass die Werte einem bestimmten Trend folgen, kann die Interpolation eine effektive Technik sein. Pandas bietet eine interpolate()
Funktion:
df['A'] = df['A'].interpolate()
Diese Methode schätzt fehlende Werte auf Grundlage vorhandener Datenpunkte.
Es ist wichtig zu bewerten, wie sich die von Ihnen gewählte Methode zum Umgang mit fehlenden Werten auf Ihren Datensatz und die nachfolgende Analyse auswirkt. Überprüfen Sie die Form Ihres DataFrame und führen Sie vor und nach dem Umgang mit fehlenden Werten beschreibende Statistiken durch. Dadurch können Sie sicherstellen, dass Ihre Analyse gültig und robust bleibt.
# Shape before handling missing values
print (df.shape)
# After filling missing values
filled_df = df.fillna(0)# Example of filling with 0]
print(filled_df.shape)]
Der Umgang mit fehlenden Werten ist ein grundlegender Aspekt der Datenvorverarbeitung in Pandas. Das Verständnis der Unterschiede zwischen NaN
, None
, NA
, und NaT
ist für die effektive Identifizierung und Verwaltung dieser Werte unerlässlich. Abhängig von Ihrem Datensatz und Ihren Analyseanforderungen können Sie fehlende Werte löschen, ausfüllen oder interpolieren.
Durch sorgfältigen Einsatz dieser Techniken können Sie die Integrität Ihrer Analyse wahren und sicherstellen, dass Ihre Ergebnisse genau und aussagekräftig sind. Wenn Sie weiterhin mit Daten in Pandas arbeiten, wird die Beherrschung des Umgangs mit fehlenden Werten Ihre Fähigkeiten im Umgang mit Daten erheblich verbessern. Unabhängig davon, ob Sie Konstanten, Mittelwerte oder benutzerdefinierte Einträge verwenden, besteht das Ziel immer darin, Ihren Datensatz für eine aufschlussreiche Analyse vorzubereiten.