In diesem Artikel werden hauptsächlich relevante Informationen zur String-Verarbeitung der Python-Datenbereinigung vorgestellt.
Vorwort
Die Datenbereinigung ist ein Komplex und mühsame (kubi) Arbeit, es ist auch das wichtigste Glied im gesamten Datenanalyseprozess. Manche Leute sagen, dass 80 % der Zeit eines Analyseprojekts darin besteht, Daten zu bereinigen. Das klingt seltsam, trifft aber auf die tatsächliche Arbeit zu. Es gibt zwei Zwecke der Datenbereinigung. Der erste besteht darin, die Daten durch die Bereinigung verfügbar zu machen. Die zweite besteht darin, die Daten für die spätere Analyse besser geeignet zu machen. Mit anderen Worten: Es gibt „schmutzige“ Daten, die gelöscht werden müssen, und saubere Daten, die ebenfalls gelöscht werden müssen.
Bei der Datenanalyse, insbesondere bei der Textanalyse, erfordert die Zeichenverarbeitung viel Energie, daher ist das Verständnis der Zeichenverarbeitung auch eine sehr wichtige Fähigkeit für die Datenanalyse.
String-Verarbeitungsmethoden
Lassen Sie uns zunächst die grundlegenden Methoden verstehen.
Zuerst Alle, lasst es uns verstehen. Die folgende String-Aufteilungsmethode
str='i like apple,i like bananer' print(str.split(','))
führt zur Aufteilung der Zeichenkette durch Kommas:
['i like apple', 'i like bananer']
print(str.split(' '))
Das Ergebnis der Aufteilung nach Leerzeichen:
['i', 'like', 'apple,i', 'like', 'bananer']
print(str.index(',')) print(str.find(','))
Beide Suchergebnisse sind:
12
Wenn nicht gefunden, gibt der Index einen Fehler zurück und die Suche gibt -1 zurück
print(str.count('i'))
Das Ergebnis ist:
4
connt wird verwendet, um die Häufigkeit der Zielzeichenfolge zu zählen
print(str.replace(',', ' ').split(' '))
Das Ergebnis ist:
['i', 'like', 'apple', 'i', 'like', 'bananer']
Hier ersetzt ersetzen Kommas durch Leerzeichen, Verwenden Sie Leerzeichen, um die Zeichenfolge aufzuteilen, gerade genug, um jedes Wort herauszunehmen.
Zusätzlich zu herkömmlichen Methoden ist das leistungsfähigere Zeichenverarbeitungstool Regulärer Ausdruck nichts anderes als.
Reguläre Ausdrücke
Bevor wir reguläre Ausdrücke verwenden, müssen wir die vielen Methoden in regulären Ausdrücken verstehen.
Lassen Sie mich die Verwendung der nächsten Methode betrachten. Verstehen Sie zunächst den Unterschied zwischen den Übereinstimmungs- und Suchmethoden
str = "Cats are smarter than dogs" pattern=re.compile(r'(.*) are (.*?) .*') result=re.match(pattern,str) for i in range(len(result.groups())+1): print(result.group(i))
Das Ergebnis ist:
Katzen sind schlauer als Hunde
Katzen
schlauer
Bei dieser Form der Pettern-Matching-Regel sind die Rückgabeergebnisse der Match- und Suchmethoden die gleich
Wenn Sie zu diesem Zeitpunkt das Muster in
pattern=re.compile(r'are (.*?) .*')
ändern, wird keine Übereinstimmung zurückgegeben und das Suchergebnis lautet:
sind schlauer als Hunde
klüger
Als nächstes lernen wir den Einsatz anderer Methoden kennen
str = "138-9592-5592 # number" pattern=re.compile(r'#.*$') number=re.sub(pattern,'',str) print(number)
Das Ergebnis ist:
138- 9592-5592
Das Obige dient dazu, die Nummer zu extrahieren, indem der Inhalt nach dem #-Zeichen durch nichts ersetzt wird.
Wir können den Querstrich der Zahl weiter ersetzen
print(re.sub(r'-*','',number))
Das Ergebnis ist:
13895925592
Wir können auch die Suchmethode verwenden, um die gefundene Zeichenfolge auszudrucken
str = "138-9592-5592 # number" pattern=re.compile(r'5') print(pattern.findall(str))
Das Ergebnis ist:
['5', '5', '5']
Der Gesamtinhalt regulärer Ausdrücke ist relativ umfangreich und wir müssen die Regeln für den Abgleich von Zeichenfolgen ausreichend verstehen. Im Folgenden sind die spezifischen Abgleichsregeln aufgeführt.
Vektorisierte ZeichenfolgeFunktion
Beim Bereinigen der verstreuten Daten, die analysiert werden sollen, ist dies häufig erforderlich Führen Sie einige Arbeiten zur String-Normalisierung durch.
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) print(data)
Das Ergebnis ist:
Sie können durch einige Integrationsmethoden eine vorläufige Beurteilung der Daten vornehmen, z Die Daten enthalten die Schlüsselwörter
print(data.str.contains('@'))
. Das Ergebnis lautet:
Sie können die Zeichenfolge auch teilen und die erforderliche Zeichenfolge extrahieren
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) pattern=re.compile(r'(\d*)@([a-z]+)\.([a-z]{2,4})') result=data.str.match(pattern) #这里用fillall的方法也可以result=data.str.findall(pattern) print(result)
Das Ergebnis ist:
chen [(8622, xinlang, com)]
li [(120, qq, com)]
sun [(5243, gmail, com )]
wang [(5632, qq, com)]
zhao NaN
dtype: object
Um zu diesem Zeitpunkt beizutreten, müssen wir extrahieren die Vorderseite der E-Mail-Adresse. Der Name
print(result.str.get(0))
ergibt:
oder den Domainnamen, zu dem die E-Mail-Adresse gehört
print(result.str.get(1))
führt zu:
Natürlich können Sie es auch durch Slicing extrahieren, aber die Genauigkeit der extrahierten Daten ist nicht hoch
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) print(data.str[:6])
Das Ergebnis ist:
Endlich verstehen wir die vektorisierte String-Methode
Zusammenfassung
[Verwandte Empfehlungen ]
1. Python kostenloses Video-Tutorial
2 Python objektorientiertes Video-Tutorial
3 Grundlegendes Einführungs-Tutorial zu Python
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen zum Bereinigen von Zeichenfolgen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!