5 Tipps zur Verwendung regulärer Ausdrücke bei der Datenbereinigung
Bild vom Autor | Erstellt auf Canva

Wenn Sie Linux oder Mac verwenden, haben Sie wahrscheinlich schon grep in der Befehlszeile, um Dateien nach übereinstimmenden Mustern zu durchsuchen. Mit regulären Ausdrücken (Regex) können Sie Textual content anhand von Mustern suchen, abgleichen und bearbeiten. Das macht sie zu leistungsstarken Werkzeugen für die Textverarbeitung und Datenbereinigung.

Für reguläre Ausdrucksübereinstimmungsoperationen in Python können Sie die integrierte re-Modul. In diesem Tutorial sehen wir uns an, wie Sie mit regulären Ausdrücken Daten bereinigen können. Wir beschäftigen uns mit der Entfernung unerwünschter Zeichen, dem Extrahieren bestimmter Muster, dem Suchen und Ersetzen von Textual content und vielem mehr.

1. Entfernen Sie unerwünschte Zeichen

Bevor wir fortfahren, importieren wir das integrierte Re-Modul:

Zeichenfolgenfelder müssen (quick) immer gründlich bereinigt werden, bevor Sie sie analysieren können. Unerwünschte Zeichen – oft aufgrund unterschiedlicher Formate – können die Analyse Ihrer Daten erschweren. Mithilfe von Regex können Sie diese effizient entfernen.

Sie können die sub() Funktion aus dem Modul re, um alle Vorkommen eines Musters oder Sonderzeichens zu ersetzen oder zu entfernen. Angenommen, Sie haben Zeichenfolgen mit Telefonnummern, die Bindestriche und Klammern enthalten. Sie können sie wie gezeigt entfernen:

textual content = "Contact information: (123)-456-7890 and 987-654-3210."
cleaned_text = re.sub(r'(()-)', '', textual content)
print(cleaned_text) 

Hier, re.sub(Muster, Ersetzung, Zeichenfolge) ersetzt alle Vorkommen des Musters in der Zeichenfolge durch den Ersatz. Wir verwenden die R'(()-)‘ Muster, das mit jedem Vorkommen von (, ), oder übereinstimmt, was uns die Ausgabe gibt:

Output >>> Contact information: 1234567890 or 9876543210

2. Extrahieren Sie bestimmte Muster

Das Extrahieren von E-Mail-Adressen, URLs oder Telefonnummern aus Textfeldern ist eine häufige Aufgabe, da es sich hierbei um relevante Informationen handelt. Und um alle spezifischen Muster von Interesse zu extrahieren, können Sie die findall() Funktion.

Sie können E-Mail-Adressen aus einem Textual content wie folgt extrahieren:

textual content = "Please attain out to us at help@instance.org or assist@instance.org."
emails = re.findall(r'b(w.-)+?@w+?.w+?b', textual content)
print(emails)

Der re.findall(Muster, Zeichenfolge) Funktion findet und gibt (als Liste) alle Vorkommen des Musters in der Zeichenfolge zurück. Wir verwenden das Muster r’b(w.-)+?@w+?.w+?b‘ um alle E-Mail-Adressen abzugleichen:

Output >>> ('help@instance.com', 'gross sales@instance.org')

3. Muster ersetzen

Wir haben bereits die sub() Funktion zum Entfernen unerwünschter Sonderzeichen. Sie können jedoch ein Muster durch ein anderes ersetzen, um das Feld für eine konsistentere Analyse geeignet zu machen.

Hier ist ein Beispiel zum Entfernen unerwünschter Leerzeichen:

textual content = "Utilizing     common     expressions."
cleaned_text = re.sub(r's+', ' ', textual content)
print(cleaned_text) 

Der r’s+‘ Das Muster entspricht einem oder mehreren Leerzeichen. Die Ersatzzeichenfolge ist ein einzelnes Leerzeichen und ergibt die Ausgabe:

Output >>> Utilizing common expressions.

4. Datenformate validieren

Durch die Validierung von Datenformaten wird die Konsistenz und Richtigkeit der Daten sichergestellt. Regex kann Formate wie E-Mails, Telefonnummern und Daten validieren.

So nutzen Sie die match() Funktion zum Validieren von E-Mail-Adressen:

electronic mail = "check@instance.com"
if re.match(r'^b(w.-)+?@w+?.w+?b$', electronic mail):
    print("Legitimate electronic mail")  
else:
    print("Invalid electronic mail")

In diesem Beispiel ist die E-Mail-Zeichenfolge gültig:

5. Strings nach Mustern aufteilen

Manchmal möchten Sie einen String in mehrere Strings aufteilen, basierend auf Mustern oder dem Vorkommen bestimmter Trennzeichen. Sie können den cut up() Funktion, um das zu tun.

Teilen wir die textual content Zeichenfolge in Sätze:

textual content = "That is sentence one. And that is sentence two! Is that this sentence three?"
sentences = re.cut up(r'(.!?)', textual content)
print(sentences) 

Hier, re.cut up(Muster, Zeichenfolge) teilt den String an allen Stellen, an denen das Muster vorkommt. Wir verwenden die R'(.!?)‘ Muster zum Abgleichen von Punkten, Ausrufezeichen oder Fragezeichen:

Output >>> ('That is sentence one', ' And that is sentence two', ' Is that this sentence three', '')

Bereinigen Sie Pandas-Datenrahmen mit Regex

Durch die Kombination von Regex mit Pandas können Sie Datenrahmen effizient bereinigen.

So entfernen Sie nicht-alphabetische Zeichen aus Namen und validieren E-Mail-Adressen in einem Datenrahmen:

import pandas as pd

information = {
	'names': ('Alice123', 'Bob!@#', 'Charlie$$$'),
	'emails': ('alice@instance.com', 'bob_at_example.com', 'charlie@instance.com')
}
df = pd.DataFrame(information)

# Take away non-alphabetic characters from names
df('names') = df('names').str.substitute(r'(^a-zA-Z)', '', regex=True)

# Validate electronic mail addresses
df('valid_email') = df('emails').apply(lambda x: bool(re.match(r'^b(w.-)+?@w+?.w+?b$', x)))

print(df)

Im obigen Codeausschnitt:

  • df('names').str.substitute(sample, substitute, regex=True) ersetzt Vorkommen des Musters in der Reihe.
  • lambda x: bool(re.match(sample, x)): Diese Lambda-Funktion wendet die Regex-Übereinstimmung an und konvertiert das Ergebnis in einen Booleschen Wert.

Die Ausgabe sieht wie folgt aus:

 	  names           	   emails    valid_email
0	  Alice	        alice@instance.com     	    True
1  	  Bob          bob_at_example.com    	    False
2         Charlie     charlie@instance.com     	    True

Einpacken

Ich hoffe, Sie fanden dieses Tutorial hilfreich. Lassen Sie uns noch einmal wiederholen, was wir gelernt haben:

  • Verwenden re.sub um unnötige Zeichen zu entfernen, wie etwa Bindestriche und Klammern in Telefonnummern und dergleichen.
  • Verwenden re.findall um bestimmte Muster aus Textual content zu extrahieren.
  • Verwenden re.sub um Muster zu ersetzen, beispielsweise um mehrere Leerzeichen in ein einziges Leerzeichen umzuwandeln.
  • Validieren Sie Datenformate mit re.match um sicherzustellen, dass Daten bestimmte Formate einhalten, beispielsweise durch die Validierung von E-Mail-Adressen.
  • Um Zeichenfolgen basierend auf Mustern aufzuteilen, wenden Sie re.cut up.

In der Praxis kombinieren Sie Regex mit Pandas, um Textfelder in Datenrahmen effizient zu bereinigen. Es ist auch eine gute Praxis, Ihre Regex zu kommentieren, um ihren Zweck zu erklären und so die Lesbarkeit und Wartbarkeit zu verbessern. Weitere Informationen zur Datenbereinigung mit Pandas finden Sie unter 7 Schritte zur Beherrschung der Datenbereinigung mit Python und Pandas.

Bala Priya C ist Entwicklerin und technische Redakteurin aus Indien. Sie arbeitet gerne an der Schnittstelle zwischen Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Ihre Interessens- und Fachgebiete umfassen DevOps, Datenwissenschaft und natürliche Sprachverarbeitung. Sie liest, schreibt, programmiert und trinkt gerne Kaffee! Derzeit arbeitet sie daran, ihr Wissen zu lernen und mit der Entwickler-Group zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt auch ansprechende Ressourcenübersichten und Programmier-Tutorials.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert