Pandas df.dropna()-Funktion
df.dropna()ist eine Funktion in Pandas, mit der Zeilen oder Spalten gelöscht werden, die fehlende Werte enthalten.
) ist ein häufiges Problem.NaN、NoneoderNULLDie Funktion bietet eine einfache Möglichkeit, Daten zu bereinigen. Sie können wählen, ob Sie Zeilen oder Spalten mit fehlenden Werten löschen oder Daten anhand des Anteils fehlender Werte filtern möchten.dropna()Grundlegende Syntax und Parameter
Grundlegende Syntax und Parameter
dropna()zum Aufrufen..Syntaxformat
Syntaxformat
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
Parameterbeschreibung
| Type | Erforderlich oder nicht | Beschreibung | Standardwert | int oder str |
|---|---|---|---|---|
| axis | Optional | Gibt an, ob Zeilen oder Spalten gelöscht werden sollen. | Gibt an, dass Zeilen mit fehlenden Werten gelöscht werden;0oder'index'Gibt an, dass Spalten mit fehlenden Werten gelöscht werden.1oder'columns'Optional |
0 |
| how | str | Gibt die Löschbedingung an. | Gibt an, dass gelöscht wird, wenn fehlende Werte vorhanden sind;'any'Gibt an, dass nur gelöscht wird, wenn alle Werte fehlen.'all'Optional |
'any' |
| thresh | int | Legt die Mindestanzahl nicht fehlender Werte fest. Wenn die Anzahl der nicht fehlenden Werte in einer Zeile (oder Spalte) kleiner als | , dann wird die Zeile (oder Spalte) gelöscht.threshOptional |
Keine |
| Teilmenge | array-ähnlich | Gibt an, in welchen Spalten (oder Zeilen) auf fehlende Werte geprüft werden soll. Wenn | , dannaxis=0gibt Spaltennamen an; wennsubset, dannaxis=1gibt Zeilenindizes an.subsetOptional |
Keine |
| inplace | bool | Wenn | , ändert das ursprüngliche DataFrame direkt und gibt kein neues Objekt zurück; wennTrue, gibt ein neues DataFrame zurück und lässt die ursprünglichen Daten unverändert.FalseBeschreibung des Rückgabewerts |
False |
Beschreibung des Rückgabewerts
- ), oder
inplace=False(wennNoneDas zurückgegebene DataFrame enthält keine Zeilen oder Spalten mit fehlenden Werten.inplace=True)。 - Beispiele
Beispiele
die Verwendung von.dropna()Beispiel 1: Zeilen mit fehlenden Werten löschen
Beispiel 1: Zeilen mit fehlenden Werten löschen
Beispiel
Beispiel
import numpy as np
'Name'
data = {
'Zhang San': ['Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi', 'age'],
# Das Alter von Wang Wu fehlt: [25, 30, np.nan, 35, 28], 'Salary'
# Das Gehalt von Zhao Liu fehlt: [5000, 6000, 5500, np.nan, 7000], 'Department'
'Technologie': ['Marketing', 'Technologie', 'Marketing', 'Technologie', “Rohdaten:”]
}
df = pd.DataFrame(data)
print(# Zeilen mit fehlenden Werten löschen (Standardverhalten))
print(df)
print("=" * 50)
"Daten nach dem Entfernen fehlender Werte:"
df_cleaned = df.dropna()
print(Erwartete Ausgabe:)
print(df_cleaned)
Codeanalyse:
原始数据:
姓名 年龄 薪资 部门
0 张三 25.0 5000.0 技术
1 李四 30.0 6000.0 市场
2 王五 NaN 5500.0 技术
3 赵六 35.0 NaN 市场
4 钱七 28.0 7000.0 技术
==================================================
删除缺失值后的数据:
姓名 年龄 薪资 部门
0 张三 25.0 5000.0 技术
1 李四 30.0 6000.0 市场
4 钱七 28.0 7000.0 技术
Wir haben ein DataFrame mit fehlenden Werten erstellt, wobei das Alter von Wang Wu ist
- , und das Gehalt von Zhao Liu ist
NaNVerwendungNaN。 - Mit Standardparametern wurden alle Zeilen mit fehlenden Werten gelöscht.
df.dropna()Das Ergebnis behielt die Daten von Zhang San, Li Si und Qian Qi und löschte Wang Wu und Zhao Liu. - Beispiel 2: Spalten mit fehlenden Werten löschen
Beispiel 2: Spalten mit fehlenden Werten löschen
Beispiel
Beispiel
import numpy as np
'Name'
data = {
'Zhang San': ['Li Si', 'Wang Wu', 'Zhao Liu', 'age'],
'Salary': [25, 30, 35, 40],
# Mehrere Spalten haben fehlende Werte: [5000, np.nan, 5500, np.nan], 'Department'
'Marketing': [np.nan, 'Technology', 'Marketing', 'city'],
'Beijing': ['Shanghai', 'Guangzhou', 'Shenzhen', # Keine fehlenden Werte] “Rohdaten:”
}
df = pd.DataFrame(data)
print(# Spalten mit fehlenden Werten löschen)
print(df)
print("=" * 50)
Daten nach dem Entfernen von Spalten mit fehlenden Werten:
df_cleaned = df.dropna(axis=1)
print(Erwartete Ausgabe:)
print(df_cleaned)
Codeanalyse:
原始数据:
姓名 年龄 薪资 部门 城市
0 张三 25 5000.0 NaN 北京
1 李四 30 NaN 市场 上海
2 王五 35 5500.0 技术 广州
3 赵六 40 NaN 市场 深圳
==================================================
删除缺失值列后的数据:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 35 广州
3 赵六 40 深圳
Einstellung
- gibt an, dass spaltenweise gearbeitet wird.
axis=1Die Spalten Salary und Department enthalten fehlende Werte, daher werden sie gelöscht. - Die Spalten Name, Age und City haben keine fehlenden Werte, daher werden sie beibehalten.
- Beispiel 3: Den Parameter thresh verwenden, um die Löschbedingungen zu steuern
Beispiel 3: Den Parameter thresh verwenden, um die Löschbedingungen zu steuern
threshBeispiel
Beispiel
import numpy as np
# Hat 2 fehlende Werte
data = {
'A': [1, 2, np.nan, 4, 5],
'B': [np.nan, 2, 3, 4, np.nan], # Keine fehlenden Werte
'C': [1, 2, 3, 4, 5], # Hat 3 fehlende Werte
'D': [np.nan, np.nan, np.nan, 4, 5] “Rohdaten:”
}
df = pd.DataFrame(data)
print(# Nur Zeilen mit mindestens 3 nicht fehlenden Werten behalten)
print(df)
print("=" * 50)
"Zeilen mit mindestens 3 nicht fehlenden Werten behalten:"
df_cleaned = df.dropna(thresh=3)
print(Erwartete Ausgabe:)
print(df_cleaned)
Codeanalyse:
原始数据:
A B C D
0 1.0 NaN 1.0 NaN
1 2.0 2.0 2.0 NaN
2 NaN 3.0 3.0 NaN
3 4.0 4.0 4.0 4.0
4 5.0 NaN 5.0 5.0
==================================================
保留至少3个非缺失值的行:
A B C D
1 2.0 2.0 2.0 NaN
3 4.0 4.0 4.0 4.0
Zeile 0 hat nur 1 nicht fehlenden Wert (1.0), daher wird sie gelöscht.
- Zeile 1 hat 3 nicht fehlende Werte (2.0, 2.0, 2.0), daher wird sie beibehalten.
- Zeile 2 hat nur 2 nicht fehlende Werte (3.0, 3.0), daher wird sie gelöscht.
- Zeile 3 hat 4 nicht fehlende Werte, daher wird sie beibehalten.
- Zeile 4 hat nur 3 nicht fehlende Werte (5.0, 5.0, 5.0), daher wird sie beibehalten.
- Beispiel 4: Mit subset die zu prüfenden Spalten angeben
Beispiel 4: Mit subset die zu prüfenden Spalten angeben
Parameter überschrieben werden.subsetBeispiel
Beispiel
import numpy as np
'Name'
data = {
'Zhang San': ['Li Si', 'Wang Wu', 'Zhao Liu', 'age'],
# Das Alter von Li Si fehlt: [25, np.nan, 35, 40], 'Salary'
# Das Gehalt von Wang Wu fehlt: [5000, 6000, np.nan, 8000], 'Department'
'Technologie': ['Marketing', 'Technologie', 'Marketing', “Rohdaten:”]
}
df = pd.DataFrame(data)
print(# Nur in den Spalten "Name" und "Department" auf fehlende Werte prüfen)
print(df)
print("=" * 50)
'Name'
df_cleaned = df.dropna(subset=['Department', Daten nach Prüfung auf fehlende Werte nur in den Spalten Name und Department:])
print(# Nur in der Spalte "薪资" auf fehlende Werte prüfen)
print(df_cleaned)
print("=" * 50)
'Salary'
df_cleaned2 = df.dropna(subset=["Daten nach Prüfung auf fehlende Werte nur in der Gehaltsspalte:"])
print(Erwartete Ausgabe:)
print(df_cleaned2)
Codeanalyse:
原始数据:
姓名 年龄 薪资 部门
0 张三 25.0 5000.0 技术
1 李四 NaN 6000.0 市场
2 王五 35.0 NaN 技术
3 赵六 40.0 8000.0 市场
==================================================
只在姓名和部门列检查缺失值后的数据:
姓名 年龄 薪资 部门
0 张三 25.0 5000.0 技术
1 李四 NaN 6000.0 市场
2 王五 35.0 NaN 技术
3 赵六 40.0 8000.0 市场
==================================================
只在薪资列检查缺失值后的数据:
姓名 年龄 薪资 部门
0 张三 25.0 5000.0 技术
1 李四 30.0 6000.0 市场
3 赵六 40.0 8000.0 市场
Die Spalten Name und Department enthalten keine fehlenden Werte, daher bleiben nach der Prüfung alle Zeilen erhalten.
- In der Spalte Salary ist das Gehalt von Wang Wu
- , daher wird Zeile 2 gelöscht.
NaNBeispiel 5: how='all' verwenden, um nur Zeilen zu löschen, die ausschließlich fehlende Werte enthalten
Beispiel 5: how='all' verwenden, um nur Zeilen mit ausschließlich fehlenden Werten zu löschen
how='all'Beispiel
Beispiel
import numpy as np
“Rohdaten:”
data = {
'A': [1, np.nan, np.nan, 4],
'B': [2, np.nan, np.nan, 5],
'C': [3, np.nan, np.nan, 6]
}
df = pd.DataFrame(data)
print(# Alle Zeilen löschen, in denen alle Werte fehlen)
print(df)
print("=" * 50)
Nach dem Entfernen aller Zeilen mit fehlenden Werten:
df_cleaned = df.dropna(how='all')
print(Erwartete Ausgabe:)
print(df_cleaned)
Codeanalyse:
原始数据:
A B C
0 1.0 2.0 3.0
1 NaN NaN NaN
2 NaN NaN NaN
3 4.0 5.0 6.0
==================================================
删除全部为缺失值的行后:
A B C
0 1.0 2.0 3.0
3 4.0 5.0 6.0
Alle Werte in den Zeilen 1 und 2 sind
- , mit
NaNlösche sie.how='all'Löschen Sie sie. - Zeilen 0 und 3 enthalten tatsächliche Daten und wurden beibehalten.
Hinweise
dropna()Standardmäßig wird das ursprüngliche DataFrame nicht geändert. Um es direkt zu ändern, verwenden Sieinplace=TrueParameter überschrieben werden.- Verwenden Sie
threshBei Verwendung des Parameters sollte der von Ihnen festgelegte Wert auf Ihren Anforderungen an die Datenqualität basieren. - Bevor Sie Daten löschen, wird empfohlen, zunächst zu verwenden
df.isnull().sum()um die Anzahl der fehlenden Werte in jeder Spalte anzuzeigen, damit Sie fundiertere Entscheidungen treffen können. - Für wichtige Datensätze mit Vorsicht verwenden
dropna(), da dies zu einem großen Datenverlust führen kann. Sie können erwägen,fillna()zum Füllen fehlender Werte zu verwenden.
Andere Erweiterungen