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

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

高洛峰
高洛峰Original
2017-02-13 13:32:122262Durchsuche

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(','))

Das Ergebnis der Aufteilung der Zeichenkette durch Kommas:

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

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 der Index nicht gefunden werden kann, 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 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))

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 (.*?) .*')

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)

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

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

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('@'))

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)

结果为:

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

结果为:

Detaillierte Erläuterung der Zeichenfolgenverarbeitung in der Python-Datenbereinigungsreihe

或者需要邮箱所属的域名

print(result.str.get(1))

结果为:

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

结果为:

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中文网!

Stellungnahme:
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