Pandas pd.notna()-Funktion

Pandas 通用函数Pandas Häufige Funktionen


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örenNone、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ückTrue, 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 pandas as pd
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:

  1. pd.notna(10)undpd.notna('example')Erkennt normale numerische Werte und Zeichenketten, gibt True zurückTrue。
  2. pd.notna(None)undpd.notna(np.nan)Erkennt Marker für fehlende Werte von Python und NumPy, gibt False zurückFalse。
  3. Verwendung von pd.notna() auf einer Listepd.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 pandas as pd
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 Indizierungs[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 pandas as pd
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.

Tipp: 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 常用函数Pandas Häufige Funktionen

Andere Erweiterungen