Pandas df.replace()-Funktion
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 (wenn
inplace=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 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:
- Es gibt zwei Zeilen mit der Abteilung "Technology" im DataFrame.
- Verwenden Sie
df.replace('技术', '研发')um alle "technology" durch "R&D" zu ersetzen. - 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
# 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örterbuchs
replacements, können wir mehrere Ersetzungsregeln gleichzeitig angeben. - Diese Methode ist sehr effizient und vermeidet mehrere Aufrufe von
replace()。
Beispiel 3: Werte in einer bestimmten Spalte ersetzen
Sie können Werte nur in bestimmten Spalten ersetzen, ohne andere Spalten zu beeinflussen.
Beispiel
# 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
# 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 verwendet
VIPs*客户?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 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
# 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.
Andere Erweiterungen