Pandas df.dropna()-Funktion

Pandas Häufige Funktionen


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

  • ), oderinplace=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 pandas as pd
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

  1. , und das Gehalt von Zhao Liu istNaNVerwendungNaN。
  2. 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.
  3. Beispiel 2: Spalten mit fehlenden Werten löschen

Beispiel 2: Spalten mit fehlenden Werten löschen

Beispiel

Beispiel

import pandas as pd
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 pandas as pd
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 pandas as pd
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 pandas as pd
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

  • , mitNaNlö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 SiethreshBei 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 verwendendf.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 verwendendropna(), da dies zu einem großen Datenverlust führen kann. Sie können erwägen,fillna()zum Füllen fehlender Werte zu verwenden.

Gängige Pandas-Funktionen

Andere Erweiterungen