Reinigungsdaten müssen nicht kompliziert sein. Mastering Python Einzeiler zur Datenreinigung können Ihren Workflow drastisch beschleunigen und Ihren Code sauber halten. Dieser Weblog zeigt die nützlichsten Python-Einzeiler für die Datenreinigung und hilft Ihnen dabei, fehlende Werte, Duplikate, Formatierungsprobleme und vieles mehr in einer Codezeile umzugehen. Wir werden Pandas-One-Liner für Datenreinigungsbeispiele untersuchen, die sowohl für Anfänger als auch für Profis geeignet sind. Sie werden auch essentielle Bibliotheken zur Verringerung von Python-Daten entdecken, die die Vorverarbeitung effizient und intuitiv machen. Bereit, Ihre Daten intelligenter und nicht härter zu reinigen? Tauchen wir in kompakte und mächtige Einzeiler ein!

Warum ist die Datenreinigung wichtig?
Bevor Sie in den Reinigungsprozess eintauchen, ist es wichtig zu verstehen, warum Daten Reinigung ist der Schlüssel zu genauer Analysen und maschinellem Lernen. Rohdatensätze sind oft unordentlich, mit fehlenden Werten, Duplikaten und inkonsistenten Formaten, die die Ergebnisse verzerren können. Die ordnungsgemäße Datenreinigung gewährleistet eine zuverlässige Grundlage für die Analyse und verbessert die Leistung der Algorithmus und Erkenntnisse.
Die Einzelliner werden die adressiven Datenprobleme mit minimalem Code untersuchen, wodurch die Vorbereitung der Daten schneller und effizienter wird. Schauen wir uns nun die Schritte an, die Sie ausführen können, um Ihren Datensatz zu reinigen und diese mühelos in eine saubere, analysebereite Kind umzuwandeln.
Ein-Liner-Lösungen für die Datenreinigung
1. Handhabung fehlender Daten mit Dropna ()
Datensätze in der Praxis sind selten perfekt. Eines der häufigsten Probleme, mit denen Sie konfrontiert sind, sind die fehlenden Werte, unabhängig davon, ob sie aufgrund von Fehlern in der Datenerfassung, im Zusammenführen von Datensätzen oder bei der manuellen Eingabe fehlenden. Glücklicherweise bietet Pandas eine einfache, aber leistungsstarke Methode, um dies zu bewältigen: Dropna ().
Aber Dropna () kann mit mehreren Parametern verwendet werden. Lassen Sie uns untersuchen, wie man das Beste daraus macht.
- Achse
Gibt an, ob Sie Zeilen oder Spalten fallen lassen sollen:
- Achse = 0: Drop -Zeilen (Customary)
- Achse = 1: Dropsäulen
Code:
df.dropna(axis=0) # Drops rows
df.dropna(axis=1) # Drops columns
- Wie
Definiert den Zustand, der abfällt:
- Wie = ‚Any‘: Drop, wenn ein Wert fehlt (Customary)
- Wie = ‚All‘: Nur fallen wenn alle Werte fehlen
Code:
df.dropna(how='any') # Drop if a minimum of one NaN
df.dropna(how='all') # Drop provided that all values are NaN
- dreschen
Gibt die minimale Anzahl von Nicht-NAN-Werten an, die erforderlich sind, um die Zeile/Spalte zu halten.
Code:
df.dropna(thresh=3) # Hold rows with a minimum of 3 non-NaN values
HINWEIS: Sie können nicht zusammen verwenden, wie und Drise zusammen.
- Teilmenge
Wenden Sie den Zustand nur auf bestimmte Spalten (oder Zeilen an, wenn Achse = 1).
Code:
df.dropna(subset=('col1', 'col2')) # Drop rows if NaN in col1 or col2#import csv
2. Handhabung fehlender Daten mit fillna ()
Anstatt fehlende Daten fallen zu lassen, können Sie die Lücken mit der Pandas ‚fillna () -Methode ausfüllen. Dies ist besonders nützlich, wenn Sie Werte unterstellen möchten, anstatt Daten zu verlieren.
Lassen Sie uns untersuchen, wie fillna () mit unterschiedlichen Parametern verwendet wird.
- Teilmenge
Gibt einen Skalar-, Wörterbuch-, Serien- oder berechneten Wert wie Mittelwert, Median oder Modus an, um fehlende Daten auszufüllen.
Code:
df.fillna(0) # Fill all NaNs with 0
df.fillna({'col1': 0, 'col2': 99}) # Fill col1 with 0, col2 with 99
# Fill with imply, median, or mode of a column
df('col1').fillna(df('col1').imply(), inplace=True)
df('col2').fillna(df('col2').median(), inplace=True)
df('col3').fillna(df('col3').mode()(0), inplace=True) # Mode returns a Sequence
- Verfahren
Wird verwendet, um Nicht-Null-Werte vorwärts oder rückwärts zu verbreiten:
- ‚ffill‘ oder ‚pad‘: Vorwärtsfüllung
- ‚BFILL‘ oder ‚Backfülle‘: Rückwärtsfüllung
Code:
df.fillna(methodology='ffill') # Fill ahead
df.fillna(methodology='bfill') # Fill backward
- Achse
Wählen Sie die Richtung zu füllen:
- Axis = 0: Down (Zeilenunternehmen, Customary)
- Achse = 1: Füllen
Code:
df.fillna(methodology='ffill', axis=0) # Fill down
df.fillna(methodology='bfill', axis=1) # Fill throughout
- Restrict
Maximale Anzahl von NANs, um eine Vorwärts-/Rückwärtsfüllung auszufüllen.
Code:
df.fillna(methodology='ffill', restrict=1) # Fill at most 1 NaN in a row/column#import csv
3.. Entfernen von doppelten Werten mit Drop_duplicates ()
Entfernen Sie mühelos doppelte Zeilen aus Ihrem Datensatz mit der Funktion Drop_duplicates () und stellen Sie sicher, dass Ihre Daten sauber und einzigartig mit nur einer Codezeile sind.
Lassen Sie uns untersuchen, wie drop_ducates mit verschiedenen Parametern verwendet werden
- Teilmenge
Gibt bestimmte Spalten an, um nach Duplikaten zu suchen.
- Customary: Überprüft alle Spalten
- Verwenden Sie eine einzelne Spalte oder eine Liste von Spalten
Code:
df.drop_duplicates(subset="col1") # Verify duplicates solely in 'col1'
df.drop_duplicates(subset=('col1', 'col2')) # Verify primarily based on a number of columns
- halten
Bestimmt, welches dupliziert werden soll:
- ‚First‘ (Customary): Behalten Sie das erste Ereignis auf
- „Final“: Halten Sie das letzte Ereignis
- FALSE: Lassen Sie alle Duplikate fallen
Code:
df.drop_duplicates(maintain='first') # Hold first duplicate
df.drop_duplicates(maintain='final') # Hold final duplicate
df.drop_duplicates(maintain=False) # Drop all duplicates
4. Ersetzen spezifischer Werte durch Ersatz ()
Sie können Ersatz () verwenden, um bestimmte Werte in einem Datenrahmen oder einer Reihe zu ersetzen.
Code:
# Change a single worth
df.change(0, np.nan)
# Change a number of values
df.change((0, -1), np.nan)
# Change with dictionary
df.change({'A': {'previous': 'new'}, 'B': {1: 100}})
# Change in-place
df.change('lacking', np.nan, inplace=True)#import csv
5. Datentypen mit Asttype () ändern ()
Das Ändern des Datentyps einer Spalte trägt dazu bei, die ordnungsgemäße Vorgänge und die Speichereffizienz zu gewährleisten.
Code:
df('Age') = df('Age').astype(int) # Convert to integer
df('Worth') = df('Worth').astype(float) # Convert to drift
df('Date') = pd.to_datetime(df('Date')) # Convert to datetime
6. Whitespace von Saiten mit Str.strip () trimmen ()
In Datensätzen können unerwünschte führende oder nachverfolgende Räume in Stringwerten zu Problemen mit Sortierung, Vergleich oder Gruppierung führen. Die Str.strip () -Methode entfernt diese Räume effizient.
Code:
df('col').str.lstrip() # Removes main areas
df('col').str.rstrip() # Removes trailing areas
df('col').str.strip() # Removes each main & trailing
7. Reinigen und Extrahieren von Spaltenwerten
Sie können Spaltenwerte reinigen, indem Sie unerwünschte Zeichen entfernen oder bestimmte Muster mit regulären Ausdrücken extrahieren.
Code:
# Take away punctuation
df('col') = df('col').str.change(r'(^ws)', '', regex=True)
# Extract the username half earlier than '@' in an electronic mail deal with
df('email_user') = df('electronic mail').str.extract(r'(^(^@)+)')
# Extract the 4-digit yr from a date string
df('yr') = df('date').str.extract(r'(d{4})')
# Extract the primary hashtag from a tweet
df('hashtag') = df('tweet').str.extract(r'#(w+)')
# Extract telephone numbers within the format 123-456-7890
df('telephone') = df('contact').str.extract(r'(d{3}-d{3}-d{4})')
8. Mapping und Ersetzen von Werten
Sie können bestimmte Werte in einer Spalte zuordnen oder ersetzen, um Ihre Daten zu standardisieren oder zu transformieren.
Code:
df('Gender') = df('Gender').map({'M': 'Male', 'F': 'Feminine'})
df('Score') = df('Score').map({1: 'Dangerous', 2: 'Okay', 3: 'Good'})
9. Umgang mit Ausreißer
Ausreißer können die statistische Analyse und die Modellleistung verzerren. Hier sind gängige Techniken, um sie umzugehen:
- Z-Rating-Methode
Code:
# Hold solely numeric columns, take away rows the place any z-score > 3
df = df((np.abs(stats.zscore(df.select_dtypes(embody=(np.quantity)))) < 3).all(axis=1))
- Ausschnitt ausgestattet (auf einen Bereich beschränken)
Code:
df('col').clip(decrease=df('col').quantile(0.05),higher=df('col').quantile(0.95))
10. Wenden Sie eine Funktion mit Lambda an
Lambda -Funktionen werden mit Apply () verwendet, um Daten in der Spalte schnell zu transformieren oder zu manipulieren. Die Lambda -Funktion fungiert als Transformation, während apply () sie in der gesamten Spalte anwendet.
Code:
df('col') = df('col').apply(lambda x: x.strip().decrease()) # Removes additional areas and converts textual content to lowercase
Problemanweisung
Nachdem Sie diese Python-Einzeiler erfahren haben, schauen wir uns die Problemaussage an und versuchen, sie zu lösen. Sie erhalten einen Kundendatensatz von einer On-line -Einzelhandelsplattform. Die Daten haben Probleme wie:
- Fehlende Werte in Spalten wie E -Mail, Alter, Tweet und Telefon.
- Doppelte Einträge (z. B. denselben Namen und E -Mail).
- Inkonsistente Formatierung (z. B. Whitespace im Namen, „fehlt“ als Zeichenfolge).
- Datentypprobleme (z. B. Join_Date mit ungültigen Werten).
- Ausreißer in Alter und Kauf.
- Textdaten, die Reinigung und Extraktion mit REGEX erfordern (z. B. Hashtags aus Tweet, Benutzernamen aus E -Mails).
Ihre Aufgabe ist es, zu demonstrieren, wie Sie diesen Datensatz reinigen.
Lösung
Für die vollständige Lösung finden Sie darauf Google Colab Pocket book. Es führt Sie durch jeden Schritt, um den Datensatz mithilfe von Python und Pandas effektiv zu reinigen.
Befolgen Sie die folgenden Anweisungen, um Ihren Datensatz zu reinigen
- Drop Zeilen, bei denen alle Werte fehlen
df.dropna(how='all', inplace=True)
- Standardisieren
df.change(('lacking', 'not accessible', 'NaN'), np.nan, inplace=True)
- Füllen Sie fehlende Werte
df('Age') = df('Age').fillna(df('Age').median())
df('Electronic mail') = df('Electronic mail').fillna('(electronic mail protected)')
df('Gender') = df('Gender').fillna(df('Gender').mode()(0))
df('Purchase_Amount') = df('Purchase_Amount').fillna(df('Purchase_Amount').median())
df('Join_Date') = df('Join_Date').fillna(methodology='ffill')
df('Tweet') = df('Tweet').fillna('No tweet')
df('Cellphone') = df('Cellphone').fillna('000-000-0000')
- Duplikate entfernen
df.drop_duplicates(inplace=True)
- Streifen Sie Weißespaien und standardisieren Sie Textfelder
df('Identify') = df('Identify').apply(lambda x: x.strip().decrease() if isinstance(x, str) else x)
df('Suggestions') = df('Suggestions').str.change(r'(^ws)', '', regex=True)
- Datentypen konvertieren
df('Age') = df('Age').astype(int)
df('Purchase_Amount') = df('Purchase_Amount').astype(float)
df('Join_Date') = pd.to_datetime(df('Join_Date'), errors="coerce")
- Beheben Sie ungültige Werte
df = df(df('Age').between(10, 100)) # sensible age
df = df(df('Purchase_Amount') > 0) # take away unfavorable or zero purchases
- Ausreißerentfernung mit Z-Rating
numeric_cols = df(('Age', 'Purchase_Amount'))
z_scores = np.abs(stats.zscore(numeric_cols))
df = df((z_scores < 3).all(axis=1))
- Regex -Extraktion
df('Email_Username') = df('Electronic mail').str.extract(r'^((^@)+)')
df('Join_Year') = df('Join_Date').astype(str).str.extract(r'(d{4})')
df('Formatted_Phone') = df('Cellphone').str.extract(r'(d{3}-d{3}-d{4})')
- Endgültige Reinigung von „Identify“
df('Identify') = df('Identify').apply(lambda x: x if isinstance(x, str) else 'unknown')
Datensatz vor der Reinigung

Datensatz nach der Reinigung

Lesen Sie auch: Datenreinigung: So reinigen Sie Daten mit Python!
Abschluss
Reinigungsdaten sind ein entscheidender Schritt bei jeder Datenanalyse oder bei maschinellem Lernprojekt. Indem Sie diese leistungsstarken Python-Einzeiler zur Datenreinigung beherrschen, können Sie den Workflow Ihrer Datenvorverarbeitung optimieren und sicherstellen, dass Ihre Daten genau, konsistent und analysiert sind. Mit diesen Einzeilern können Sie Ihre Daten effizient reinigen, ohne einen langen Code zu schreiben. Durch die Nutzung der Leistung von Pandas und regelmäßigen Ausdrücken können Sie Ihren Code sauber, präzise und leicht zu warten halten. Egal, ob Sie ein Anfänger oder ein Profi sind, diese Methoden helfen Ihnen dabei, Ihre Daten intelligenter und schneller zu reinigen.
Häufig gestellte Fragen
Die Datenreinigung ist der Prozess der Identifizierung und Korrektur oder Entfernung von Fehlern, Inkonsistenzen und Ungenauigkeiten in der Daten, um die Qualität zu gewährleisten. Es ist wichtig, weil saubere Daten zu genauerer Analyse, besserer Modellleistung und zuverlässigen Erkenntnissen führen.
Dropna () entfernt Zeilen oder Spalten mit fehlenden Werten.
fillna () füllt fehlende Werte mit einem angegebenen Wert wie dem Mittelwert, dem Median oder einer vordefinierten Konstante, um die Größe und Struktur des Datensatzes beizubehalten.
Sie können die Funktion Drop_duplicates () verwenden, um doppelte Zeilen basierend auf bestimmten Spalten oder dem gesamten Datensatz zu entfernen. Sie können auch angeben, ob Sie das erste oder letzte Vorkommen beibehalten oder alle Duplikate fallen lassen sollen.
Ausreißer können mithilfe statistischer Methoden wie dem Z-Rating behandelt werden, um excessive Werte zu entfernen oder durch Ausschneiden (Capping) -Werte in einen angegebenen Bereich mit der Funktion clip ().
Sie können die Funktion von Str.strip () verwenden, um führende und nachverfolgende Räume von Saiten und die Funktion von Str.Change () mit einem regelmäßigen Ausdruck zu entfernen, um die Interpunktion zu entfernen.
Sie können die Asttype () -Methode verwenden, um eine Spalte in den richtigen Datentyp zu konvertieren, z. B. Ganzzahlen oder Floats, oder pd.to_datetime () für Datumsspalten verwenden.
Sie können fehlende Werte verarbeiten, indem Sie entweder Zeilen oder Spalten mit Dropna () oder mit einem geeigneten Wert (wie dem Mittelwert oder dem Median) mit fillna () entfernen oder mit einem geeigneten Wert füllen. Die Methode hängt vom Kontext Ihres Datensatzes und der Bedeutung der Aufbewahrung von Daten ab.
Melden Sie sich an, um weiter zu lesen und Experten-Kuratinhalte zu genießen.