Pandas df.replace()-Funktion

Häufige Pandas-Funktionen


df.replace()Es ist eine Funktion in Pandas, mit der Daten in einem DataFrame ersetzt werden.

Das Ersetzen von Daten ist ein häufiger Vorgang bei der Datenbereinigung,replace()Es kann Ihnen helfen, bestimmte Werte durch neue Werte zu ersetzen, und unterstützt mehrere flexible Methoden wie Einzelwertersetzung, Mehrfachwertersetzung und Ersetzung durch reguläre Ausdrücke. Dies ist sehr nützlich in Szenarien wie dem Umgang mit Ausreißern, der Vereinheitlichung von Datenformaten und der Kodierungsumwandlung.


Grundlegende Syntax und Parameter

replace()Es ist eine Memberfunktion von DataFrame, die über den Punktoperator.zum Aufrufen.

Syntaxformat

DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

Parameterbeschreibung

Parameter Type Erforderlich Beschreibung Standardwert
to_replace str, regex, list, dict, int, float, None Erforderlich Der zu ersetzende Wert. Er kann ein einzelner Wert, eine Liste von Werten, ein Wörterbuch, ein regulärer Ausdruck usw. sein. Keine
value Skalar, dict, list, str, regex, None Optional Der Wert nach der Ersetzung. Wennto_replacees sich um ein Dictionary handelt, kann dieser Parameter weggelassen werden; wenn es kein Dictionary ist, ist dieser Parameter erforderlich. Keine
inplace bool Optional Wenn esTrue, wird das ursprüngliche DataFrame direkt geändert, ohne ein neues Objekt zurückzugeben; wenn esFalse, wird ein neues DataFrame zurückgegeben, die ursprünglichen Daten bleiben unverändert. False
limit int Optional Geben Sie die maximale Anzahl der Ersetzungen an. Keine
regex bool oder str Optional Wenn esTrue, behandleto_replaceals regulären Ausdruck. False
method str Optional Wannto_replaceWird verwendet, wenn es eine Liste ist.'pad'oder'ffill'Kennzeichnet Vorwärtsauffüllung;'backfill'oder'bfill'Kennzeichnet Rückwärtsauffüllung. 'pad'

Beschreibung des Rückgabewerts

  • Gibt ein neues DataFrame zurück (wenninplace=False), oderNone(wenninplace=True)。
  • Die angegebenen Werte im zurückgegebenen DataFrame wurden ersetzt.

Beispiele

Lass uns das anhand einer Reihe von Beispielen gründlich meisternreplace()die Verwendung von.

Beispiel 1: Ersetzung eines einzelnen Werts

Ersetze einen bestimmten Wert im DataFrame durch einen neuen Wert.

Beispiel

import pandas as pd
import numpy as np

# Erstelle einen DataFrame, der doppelte Daten enthält
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Department': ['Technology', 'Marketing', 'Technology', 'Marketing'],
    'Salary': [5000, 6000, 5500, 7000]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Ersetze 'technology' durch 'R&D'
df_replaced = df.replace('Technology', R&D)

print("Ersetzte Daten:")
print(df_replaced)

Erwartete Ausgabe:

原始数据:
    姓名  部门   薪资
0  张三  技术  5000
1  李四  市场  6000
2  王五  技术  5500
3  赵六  市场  7000
==================================================
替换后的数据:
    姓名   部门  薪资
0  张三  研发  5000
1  李四  市场  6000
2  王五  研发  5500
3  赵六  市场  7000

Codeanalyse:

  1. Es gibt zwei Zeilen mit der Abteilung "Technology" im DataFrame.
  2. Verwenden Siedf.replace('技术', '研发')um alle "technology" durch "R&D" zu ersetzen.
  3. Diese Methode ersetzt alle übereinstimmenden Werte im DataFrame.

Beispiel 2: Eins-zu-eins-Ersetzung mehrerer Werte

Verwenden Sie ein Wörterbuch, um mehrere verschiedene Werte gleichzeitig zu ersetzen.

Beispiel

import pandas as pd

# Erstellen Sie ein DataFrame, das die zu ersetzenden Daten enthält
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
    Stufe: ['A', 'B', 'A', 'C']
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Verwenden Sie ein Wörterbuch, um mehrere Ersetzungen durchzuführen
replacements = {
    'Beijing': 'Beijing',
    'Shanghai': 'Shanghai',
    'Guangzhou': 'Guangzhou',
    'Shenzhen': 'Shenzhen',
    'A': 'Ausgezeichnet',
    'B': Gut,
    'C': 'Pass'
}
df_replaced = df.replace(replacements)

print("Ersetzte Daten:")
print(df_replaced)

Erwartete Ausgabe:

原始数据:
    姓名  城市  等级
0  张三  北京   A
1  李四  上海   B
2  王五  广州   A
3  赵六  深圳   C
==================================================
替换后的数据:
    姓名   城市  等级
0  张三  北京市  优秀
1  李四  上海市  良好
2  王五  广州市  优秀
3  赵六  深圳市  及格

Codeanalyse:

  • Mithilfe des Wörterbuchsreplacements, können wir mehrere Ersetzungsregeln gleichzeitig angeben.
  • Diese Methode ist sehr effizient und vermeidet mehrere Aufrufe vonreplace()。

Beispiel 3: Werte in einer bestimmten Spalte ersetzen

Sie können Werte nur in bestimmten Spalten ersetzen, ohne andere Spalten zu beeinflussen.

Beispiel

import pandas as pd

# DataFrame erstellen
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Department': ['Technology', 'Marketing', 'Technology', 'Marketing'],
    Position: ['Technology', 'Marketing', 'Technology', 'Marketing']
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Nur "Technology" durch "R&D" in der Spalte "Department" ersetzen
df_replaced = df.replace({'Department': 'Technology'}, R&D)

print(Daten nach dem Ersetzen nur der Abteilungsspalte:)
print(df_replaced)
print("=" * 50)

Sie können auch ein verschachteltes Wörterbuch verwenden, um unterschiedliche Ersetzungsregeln auf unterschiedliche Spalten anzuwenden.
df_replaced2 = df.replace({'Department': {'Technology': R&D, 'Marketing': Sales}, Position: 'Technology'})

print("Daten nach Anwendung unterschiedlicher Ersetzungsregeln auf unterschiedliche Spalten:")
print(df_replaced2)

Erwartete Ausgabe:

原始数据:
    姓名  部门  职位
0  张三  技术  技术
1  李四  市场  市场
2  王五  技术  技术
3  赵六  市场  市场
==================================================
只替换部门列后的数据:
    姓名   部门  职位
0  张三  研发  技术
1  李四  市场  市场
2  王五  研发  技术
3  赵六  市场  市场
==================================================
对不同列使用不同规则替换后的数据:
    姓名   部门  职位
0  张三  研发  研发
1  李四  销售  市场
2  王五  研发  研发
3  赵六  销售  市场

Codeanalyse:

  • Verwendung{'department': 'Technology'}kann nur die Werte in der Spalte "Department" ersetzen.
  • Verschachteltes Wörterbuch{'department': {'Technology': 'R&D'}}kann unterschiedliche Ersetzungsregeln für verschiedene Spalten angeben.

Beispiel 4: Ersetzen mit regulären Ausdrücken

regex=TrueDer Parameter ermöglicht die Verwendung regulärer Ausdrücke für die Ersetzung, was sehr nützlich ist, wenn Text mit Musterabgleich verarbeitet wird.

Beispiel

import pandas as pd

# Erstelle ein DataFrame, das mit regulären Ausdrücken verarbeitet werden muss
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    Telefon: ['138-0000-0000', '139-1111-1111', '137-2222-2222', '136-3333-3333'],
    Bemerkungen: [Normal, 'VIPclient', Normal, 'VIP customer']
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Verwende reguläre Ausdrücke, um Trennzeichen in Telefonnummern zu ersetzen
df_replaced = df.replace(to_replace=r'(d{3})-(d{4})-(d{4})', value=r'1****3', regex=True)

print(Daten nach dem Ersetzen von Telefonnummern (die mittleren 4 Ziffern werden ausgeblendet):)
print(df_replaced)
print("=" * 50)

# Ersetze "VIP customer" in der Bemerkung (es kann Unterschiede bei den Leerzeichen geben)
df_replaced2 = df.replace(to_replace=r'VIPs*Customers?', value='VIP', regex=True)

print(Daten nach Vereinheitlichung der VIP-Bemerkungen:)
print(df_replaced2)

Erwartete Ausgabe:

原始数据:
    姓名          电话        备注
0  张三  138-0000-0000       正常
1  李四  139-1111-1111   VIP客户
2  王五  137-2222-2222       正常
3  赵六  136-3333-3333  VIP 客户
==================================================
替换电话号码(隐藏中间4位)后的数据:
    姓名          电话  备注
0  张三  138****0000   正常
1  李四  139****1111  VIP客户
2  王五  137****2222   正常
3  赵六  136****3333  VIP 客户
==================================================
统一VIP备注后的数据:
    姓名          电话  备注
0  张三  138-0000-0000  正常
1  李四  139-1111-1111  VIP
2  王五  137-2222-2222  正常
3  赵六  136-3333-3333  VIP

Codeanalyse:

  • Das erste Beispiel verwendet einen regulären Ausdruck(d{3})-(d{4})-(d{4})um das Telefonnummernformat abzugleichen und es zu ersetzen durch1****3, wodurch die mittleren 4 Ziffern ausgeblendet werden.
  • Das zweite Beispiel verwendetVIPs*客户?um sowohl die Formate "VIPclient" als auch "VIP client" abzugleichen und sie einheitlich durch "VIP" zu ersetzen.

Beispiel 5: Fehlende Werte NaN ersetzen

replace()Es kann auch verwendet werden, um fehlende Werte zu ersetzenNaN, was eine häufige Operation bei der Datenbereinigung ist.

Beispiel

import pandas as pd
import numpy as np

# Erstelle einen DataFrame mit fehlenden Werten
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Age': [25, np.nan, 35, np.nan],
    'Salary': [5000, 6000, np.nan, 8000]
}
df = pd.DataFrame(data)

print("Originaldaten:")
print(df)
print("=" * 50)

# Ersetze NaN durch 0
df_replaced = df.replace(np.nan, 0)

print("Daten nach dem Ersetzen von NaN durch 0:")
print(df_replaced)
print("=" * 50)

# Ersetze NaN durch andere Werte, wie "Unknown"
df_replaced2 = df.replace(np.nan, 'Unknown')

print("Daten nach dem Ersetzen von NaN durch 'Unknown':")
print(df_replaced2)

Erwartete Ausgabe:

原始数据:
    姓名   年龄    薪资
0  张三  25.0  5000.0
1  李四   NaN  6000.0
2  王五  35.0     NaN
3  赵六   NaN  8000.0
==================================================
将 NaN 替换为 0 后的数据:
    姓名   年龄  薪资
0  张三  25.0  5000
1  李四   0.0  6000
2  王五  35.0     0
3  赵六   0.0  8000
==================================================
将 NaN 替换为'未知'后的数据:
    姓名   年龄    薪资
0  张三  25.0  5000.0
1  李四  未知  6000.0
2  王五  35.0    未知
3  赵六  未知  8000.0

Code-Erklärung:

  • np.nansteht für fehlende Werte. Du kannstreplace(np.nan, value), um sie zu ersetzen.
  • Wähle einen geeigneten Wert, um fehlende Werte basierend auf dem Datentyp und den geschäftlichen Anforderungen zu ersetzen.

Beispiel 6: Numerische Ersetzung

Du kannst numerische Daten ersetzen, um Datenstandardisierung oder Ausreißerbehandlung durchzuführen.

Beispiel

import pandas as pd

# DataFrame mit Ausreißern erstellen
data = {
    'Student': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    'Score': [85, 150, 78, 92, -10]  # 150 und -10 sind Ausreißer
}
df = pd.DataFrame(data)

print("Originaldaten:")
print(df)
print("=" * 50)

# Ausreißer durch Werte in einem sinnvollen Bereich ersetzen
df_replaced = df.replace({150: 100, -10: 0})

print("Daten nach dem Ersetzen von Ausreißern:")
print(df_replaced)
print("=" * 50)

# Bedingte Logik verwenden, um mehrere Werte zu ersetzen
df_replaced2 = df.replace(to_replace=[150, -10], value=[100, 0])

print("Verwendung von Listen zum Ersetzen mehrerer Werte:")
print(df_replaced2)

Erwartete Ausgabe:

原始数据:
    学生  成绩
0  张三    85
1  李四   150
2  王五    78
3  赵六    92
4  钱七   -10
==================================================
将异常值替换后的数据:
    学生  成绩
0  张三    85
1  李四   100
2  王五    78
3  赵六    92
4  钱七     0
==================================================
使用列表替换多个值:
    学生  成绩
0  张三    85
1  李四   100
2  王五    78
3  赵六    92
4  钱七     0

Code-Erklärung:

  • dictionary{150: 100, -10: 0}Ersetzen Sie Ausreißer 150 durch 100 und -10 durch 0.
  • Liste[150, -10]und[100, 0]Geben Sie die zu ersetzenden Werte bzw. die Ersatzwerte in der entsprechenden Reihenfolge an.

Hinweise

  • replace()Standardmäßig wird das ursprüngliche DataFrame nicht geändert. Wenn Sie es an Ort und Stelle ändern möchten, verwenden Sieinplace=TrueParameter überschrieben werden.
  • Achten Sie bei der Verwendung regulärer Ausdrücke darauf, dass die Regex-Syntax korrekt ist; komplexe reguläre Ausdrücke können unerwartete Ergebnisse verursachen.
  • Die Ersetzung basiert auf Wertübereinstimmung und ändert den Datentyp nicht.
  • Achten Sie auf die Groß-/Kleinschreibung; "Technology" und "Technology" sind unterschiedliche Werte.
  • Vor dem Ersetzen von Daten wird empfohlen, die Originaldaten für Vergleich und Rückverfolgbarkeit zu sichern.

Gängige Pandas-Funktionen

Andere Erweiterungen