Heim > Backend-Entwicklung > Python-Tutorial > Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

高洛峰
Freigeben: 2017-02-13 13:32:12
Original
2348 Leute haben es durchsucht

Vorwort

Datenbereinigung ist eine komplexe und mühsame (kubi) Aufgabe und zugleich 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.

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

Zuerst Alle, lasst es uns verstehen. Die folgende Zeichenfolgenaufteilungsmethode

str='i like apple,i like bananer'
print(str.split(','))
Nach dem Login kopieren

Das Ergebnis der Aufteilung der Zeichenkette durch Kommas:

[ 'Ich mag Apfel', 'Ich mag Bananen']

print(str.split(' '))
Nach dem Login kopieren

Das Ergebnis der Aufteilung nach Leerzeichen:

[ 'i', 'like', 'apple,i', 'like', 'bananer']

print(str.index(','))
print(str.find(','))
Nach dem Login kopieren

Beide Suchergebnisse sind:

12

Wenn der Index nicht gefunden werden kann, gibt der Index einen Fehler zurück und die Suche gibt -1 zurück

print(str.count('i'))
Nach dem Login kopieren

Das Ergebnis ist:

4

connt wird verwendet, um die Häufigkeit der Zielzeichenfolge zu zählen

print(str.replace(',', ' ').split(' '))
Nach dem Login kopieren

Das Ergebnis ist:

['i', 'like', 'apple', 'i', 'like', 'bananer']

Hier ersetzt ersetzen Kommas durch Leerzeichen und verwendet dann Leerzeichen, um die Zeichenfolge aufzuteilen, gerade genug, um jedes Wort zu extrahieren.

Neben herkömmlichen Methoden sind reguläre Ausdrücke das leistungsstärkste Werkzeug zur Zeichenverarbeitung.

Reguläre Ausdrücke

Bevor wir reguläre Ausdrücke verwenden, müssen wir die vielen Methoden in regulären Ausdrücken verstehen.

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

Lassen Sie mich zunächst 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))
Nach dem Login kopieren

Das Ergebnis ist:

Katzen sind schlauer als Hunde
Katzen
schlauer

Nach dieser Form der Pettern-Matching-Regel , match und Das Rückgabeergebnis der Suchmethode ist das gleiche

Zu diesem Zeitpunkt wird das Muster in

pattern=re.compile(r'are (.*?) .*')
Nach dem Login kopieren

geändert

Übereinstimmung, dann wird keine zurückgegeben. Das Suchergebnis lautet:

sind schlauer als Hunde
schlauer

Als nächstes lernen wir die Verwendung von „andere“ kennen Methoden

str = "138-9592-5592 # number"
pattern=re.compile(r'#.*$')
number=re.sub(pattern,'',str)
print(number)
Nach dem Login kopieren

Das Ergebnis ist:

138-9592-5592

Das Oben wird der Inhalt nach dem #-Zeichen durch leer ersetzt, um den Zweck des Extrahierens der Zahl zu erreichen.

Wir können den Querbalken der Zahl weiter ersetzen

print(re.sub(r'-*','',number))
Nach dem Login kopieren

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))
Nach dem Login kopieren

Das Ergebnis ist:

['5', '5', '5']

Der Gesamtinhalt des regulären Ausdrucks ist relativ groß, und wir müssen über genügend Regeln zum Abgleichen von Zeichenfolgen verfügen Im Folgenden sind die spezifischen Matching-Regeln aufgeführt.

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

Vektorisierte String-Funktion

Beim Bereinigen der verstreuten Daten, die analysiert werden sollen, ist es oft notwendig, einige String-Regularisierungsarbeiten durchzuführen .

data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com',
 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'})
print(data)
Nach dem Login kopieren

Das Ergebnis ist:

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

Die Daten können durch einige Methoden vorverarbeitet werden Regulierung und Integration Verwenden Sie beispielsweise „contains“, um zu bestimmen, ob alle Daten das Schlüsselwort

print(data.str.contains('@'))
Nach dem Login kopieren

enthalten. Das Ergebnis ist:

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

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)
Nach dem Login kopieren

结果为:

chen [(8622, xinlang, com)]
li [(120, qq, com)]
sun [(5243, gmail, com)]
wang [(5632, qq, com)]
zhao NaN
dtype: object

此时加入我们需要提取邮箱前面的名称

print(result.str.get(0))
Nach dem Login kopieren

结果为:

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

或者需要邮箱所属的域名

print(result.str.get(1))
Nach dem Login kopieren

结果为:

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

当然也可以用切片的方式进行提取,不过提取的数据准确性不高

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])
Nach dem Login kopieren

结果为:

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

最后我们了解下矢量化的字符串方法

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

更多Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe相关文章请关注PHP中文网!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage