NaN, None und mehr verstehen: Umgang mit fehlenden Werten in Pandas

Gepostet von Sathish Kumar Srinivasan Dienstag, Okt. 15, 2024

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.

Die Natur fehlender Werte

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:

  • NaN (Keine Zahl): Dies ist eine Gleitkommadarstellung für fehlende numerische Daten. Sie wird von der NumPy-Bibliothek bereitgestellt und ist die Standardmethode zum Anzeigen fehlender Werte in numerischen Arrays.
  • Keine: Dies ist ein Python-Objekt, das das Fehlen eines Werts oder einen Nullwert anzeigt. Im Kontext von Pandas kann es synonym mit Objektdatentypen Noneverwendet werden .NaN
  • NA: Eingeführt in Pandas Version 1.0, NAist ein dedizierter Skalar für fehlende Werte in einer Datenstruktur. Im Gegensatz zu NaN, das ein Float ist, NAkann es für Ganzzahlen und andere Datentypen verwendet werden, was es vielseitiger macht.
  • NaT (Keine Zeit): Dies stellt fehlende Werte in Datums-/Uhrzeitdaten dar. Ähnlich wie NaNist es ein Platzhalter für fehlende Zeitstempel.

Identifizieren fehlender Werte

Bevor Sie fehlende Werte behandeln, müssen Sie deren Vorhandensein in Ihrem Datensatz identifizieren. Pandas bietet mehrere Funktionen zum Erkennen fehlender Werte:

  • isna() / isnull(): Diese Funktionen geben einen DataFrame mit der gleichen Form wie das Original zurück, wobei Boolesche Werte das Vorhandensein fehlender Werte anzeigen.
  • notna() / notnull(): Das Gegenteil des Obigen. Diese Funktionen geben Truenicht fehlende Werte zurück.

Hier ist ein einfaches Beispiel:

Python

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.

Umgang mit fehlenden Werten

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:

1. Fehlende Werte entfernen

Wenn der Anteil fehlender Werte gering ist, können Sie diese mit der folgenden Funktion aus Ihrem Datensatz entfernen dropna():

Python

# 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 subsetdass bestimmte Spalten als Ziel ausgewählt werden sollen.

2. Fehlende Werte ergänzen

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:

  • Mit einem konstanten Wert füllen:

    Python

    df['A'] = df['A'].fillna(0)  # Replace NaN in column A with 0 
    
  • Vorwärtsfüllen: Diese Methode füllt fehlende Werte mit dem letzten bekannten Wert auf.

    Python

    df['B'] = df['B'].fillna(method='ffill') 
    
  • Rückwärtsfüllen: Ähnlich wie Vorwärtsfüllen, füllt jedoch mit dem nächsten bekannten Wert.

    Python

    df['C'] = df['C'].fillna(method='bfill') 
    
  • Mittelwert/Median/Modus: Bei numerischen Daten kann es sinnvoll sein, fehlende Werte mit dem Mittelwert, Median oder Modus aufzufüllen:

    Python

    df['A'] = df['A'].fillna(df['A'].mean()) 
    
  • Verwenden von NA: Wenn Sie fehlende Werte gezielt durch ersetzen möchten NA, können Sie dies direkt tun:

    Python

    df['D'] = df['D'].fillna(pd.NA) 
    

3.Verwenden benutzerdefinierter Werte

Manchmal kann domänenspezifisches Wissen Sie dazu veranlassen, fehlende Werte durch benutzerdefinierte Werte zu ersetzen. Dies kann insbesondere bei kategorialen Daten nützlich sein:

Python

df['B'] = df['B'].fillna('Unknown')  # Fill missing string values with 'Unknown' 
												

4.Interpolation fehlender Werte

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:

Python

df['A'] = df['A'].interpolate() 
												

Diese Methode schätzt fehlende Werte auf Grundlage vorhandener Datenpunkte.

Auswerten der Auswirkungen der Behandlung fehlender Werte

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.

Beispielauswertung

Python

# 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)]

Abschluss

Der Umgang mit fehlenden Werten ist ein grundlegender Aspekt der Datenvorverarbeitung in Pandas. Das Verständnis der Unterschiede zwischen NaN, None, NA, und NaTist 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.