Pandas pd.notna()-Funktion
pd.notna()ist eine Funktion in der Pandas-Bibliothek, die zumErkennen fehlender Werteverwendet wird. Sie prüft jedes Element im Eingabeobjekt, um festzustellen, ob es sich um einen nicht fehlenden Wert handelt, und gibt ein Ergebnis zurück, das aus booleschen Werten (True/False) besteht.
Sie ist eine der am häufigsten verwendeten Funktionen in der Datenbereinigung und hilft uns, gültige Werte in den Daten schnell zu identifizieren und uns auf die anschließende Datenverarbeitung und -analyse vorzubereiten.
Begriffserklärung: not"not" ist eine Negation,na"na" ist eine Abkürzung für "not available", zusammen bedeutet es also "kein fehlender Wert".
Grundlegende Syntax und Parameter
pd.notna()ist eine Top-Level-Funktion der Pandas-Bibliothek und kann direkt aufgerufen werden überpd.notna(), oder über das Series- oder DataFrame-Objekt.notna()Methode.
Syntaxformat
pd.notna(obj)
Parameterbeschreibung
- Parameter:
obj- Typ: Ein beliebiges Python-Objekt, wie Series, DataFrame, list, array, Skalarwert usw.
- Beschreibung: Das Objekt, das auf nicht fehlende Werte überprüft werden soll. Zu den fehlenden Werten in Pandas gehören
None、NaN、NaT(fehlender Zeittyp) undpandas.NA。
Funktionsbeschreibung
- Rückgabewert: Gibt ein boolesches Objekt mit derselben Form wie das Eingabeobjekt zurück. Wenn es sich um eine Series oder ein DataFrame handelt, wird ein Objekt desselben Typs zurückgegeben; wenn es sich um einen Skalar handelt, wird ein einzelner boolescher Wert zurückgegeben.
- Wirkung: Gibt True für nicht fehlende Werte zurück
True, und gibt False für fehlende Werte zurückFalse。
Beispiele
Lassen Sie uns die Verwendung von pd.notna() gründlich beherrschenpd.notna()anhand einer Reihe von Beispielen von einfach bis komplex.
Beispiel 1: Grundlegende Verwendung - Erkennen fehlender Werte in Skalaren und Listen
Beispiel
import numpy as np
# 1. Prüfen, ob Skalarwerte nicht fehlend sind
print("=== Skalar-Erkennung ===")
print(f"pd.notna(10): {pd.notna(10)}") # Normaler numerischer Wert -> True
print(f"pd.notna('example'): {pd.notna('example')}") # Normaler String -> True
print(f"pd.notna(None): {pd.notna(None)}") # None -> False
print(f"pd.notna(np.nan): {pd.notna(np.nan)}") # np.nan -> False
# 2. Fehlende Werte in einer Liste erkennen
print("\n=== Listen-Erkennung ===")
data_list = [1, 2, np.nan, 'example', None, 5]
result = pd.notna(data_list)
print(f"Ursprüngliche Liste: {data_list}")
print(f"Erkennungsergebnis: {result.tolist()}") # Zur leichteren Ansicht in Liste umwandeln
Erwartete Ausgabe:
=== 标量检测 ===
pd.notna(10): True
pd.notna('example'): True
pd.notna(None): False
pd.notna(np.nan): False
=== 列表检测 ===
原始列表: [1, 2, nan, 'example', None, 5]
检测结果: [True, False, True, False, True]
Code-Erklärung:
pd.notna(10)undpd.notna('example')Erkennt normale numerische Werte und Zeichenketten, gibt True zurückTrue。pd.notna(None)undpd.notna(np.nan)Erkennt Marker für fehlende Werte von Python und NumPy, gibt False zurückFalse。- Verwendung von pd.notna() auf einer Liste
pd.notna()gibt eine boolesche Liste zurück, bei der Positionen fehlender Werte False sindFalse。
Beispiel 2: Fehlende Werte in einer Series erkennen
Bei der Verarbeitung von Series-Daten,pd.notna()pd.notna() kann gültige Daten schnell lokalisieren.
Beispiel
import numpy as np
# Eine Series mit fehlenden Werten erstellen
s = pd.Series([1, 2, np.nan, 4, None, 'example', np.nan])
print("=== Ursprüngliche Series ===")
print(s)
print(f"\nTyp: {type(s)}")
# Verwende pd.notna() zum Erkennen
print("\n=== pd.notna() Erkennungsergebnis ===)
result = pd.notna(s)
print(result)
# Verwende die notna()-Methode der Series (gleichwertiger Effekt)
print("\n=== Erkennung mit s.notna()-Methode ===)
print(s.notna())
# Nicht fehlende Werte herausfiltern
print("\n=== Nicht fehlende Werte filtern ===)
print(s[s.notna()])
Erwartete Ausgabe:
=== 原始 Series === 0 1 1 2 2 NaN 3 4 4 None 5 example 6 NaN dtype: object === pd.notna() 检测结果 === 0 True 1 True 2 False 3 True 4 False 5 True 6 False dtype: bool === s.notna() 方法检测 === 0 True 1 True 2 False 3 True 4 False 5 True 6 False dtype: bool === 筛选非缺失值 === 0 1 1 2 3 4 5 example dtype: object
Code-Erklärung:
pd.notna(s)unds.notna()Beide können fehlende Werte in einer Series erkennen und eine boolesche Series zurückgeben.- Mithilfe boolescher Indizierung
s[s.notna()]lassen sich schnell alle nicht fehlenden Elemente herausfiltern, was bei der Datenbereinigung sehr nützlich ist.
Beispiel 3: Erkennung fehlender Werte in einem DataFrame
Bei der Verarbeitung tabellarischer Daten,pd.notna()pd.notna() kann schnell die Vollständigkeit der Daten aufzeigen.
Beispiel
import numpy as np
# DataFrame mit fehlenden Werten erstellen
df = pd.DataFrame({
'name': ['Alice', 'Bob', None, 'Diana'],
'age': [25, np.nan, 30, 28],
'score': [85, 90, np.nan, 95]
})
print("=== Ursprüngliches DataFrame ===")
print(df)
# Das gesamte DataFrame erkennen
print("\n=== pd.notna() Erkennungsergebnis ===)
print(pd.notna(df))
# Fehlende Werte pro Spalte zählen
print("\n=== Anzahl der nicht fehlenden Werte pro Spalte ===)
print(df.notna().sum())
# Fehlende Werte pro Zeile zählen
print("\n=== Anzahl der nicht fehlenden Werte pro Zeile ===)
print(df.notna().sum(axis=1))
# Anteil fehlender Werte berechnen
print("\n=== Anteil fehlender Werte ===)
missing_ratio = df.isna().mean()
print(missing_ratio)
Erwartete Ausgabe:
=== 原始 DataFrame ===
name age score
0 Alice 25 85.0
1 Bob NaN 90.0
2 None 30 NaN
3 Diana 28 95.0
=== pd.notna() 检测结果 ===
name age score
0 True True True
1 True False True
2 False True False
3 True True True
=== 每列非缺失值数量 ===
name 3
age 3
score 3
=== 每行非缺失值数量 ===
0 3
1 2
2 1
3 3
=== 缺失值比例 ===
name 0.25
age 0.25
score 0.25
Code-Erklärung:
pd.notna(df)Gibt ein boolesches DataFrame mit derselben Form wie das ursprüngliche DataFrame zurück, wobei jede Position angibt, ob es sich um einen nicht fehlenden Wert handelt.df.notna().sum()Zählt die Anzahl der nicht fehlenden Werte in jeder Spalte.df.isna().mean()Berechnet den Anteil fehlender Werte in jeder Spalte, um die Datenqualität besser bewerten zu können.
Andere ErweiterungenTipp:
pd.notna()undpd.isna()sind das Gegenteil voneinander.pd.notna()Wo pd.notna() True zurückgibt,pd.isna()pd.isna() gibt False zurück, und umgekehrt.
Pandas Häufige Funktionen