Función Pandas pd.notna()

Pandas 通用函数Funciones comunes de Pandas


pd.notna()Es una función de la biblioteca Pandas utilizada paradetectar valores faltantes. La función verifica cada elemento del objeto de entrada, determina si es un valor no faltante y devuelve un resultado compuesto por valores booleanos (True/False).

Esta es una de las funciones más utilizadas en la limpieza de datos. Puede ayudarnos a identificar rápidamente los valores válidos en los datos, preparándonos para el posterior procesamiento y análisis de datos.

Definición de la palabra: not"not" es una negación,na"na" es la abreviatura de "not available" (no disponible), y en conjunto significa "no es un valor faltante".


Sintaxis básica y parámetros

pd.notna()Es una función de nivel superior de la biblioteca Pandas; se puede llamar directamente mediantepd.notna()o también mediante el método de los objetos Series o DataFrame.notna().

Formato de sintaxis

pd.notna(obj)

Descripción de parámetros

  • Parámetro: obj
    • Tipo: cualquier objeto de Python, como Series, DataFrame, listas, arrays, valores escalares, etc.
    • Descripción: el objeto a verificar si es un valor no faltante. Los valores faltantes en Pandas incluyenNone、NaN、NaT(tipos de tiempo faltantes) ypandas.NA。

Descripción de la función

  • Valor de retorno: Devuelve un objeto booleano con la misma forma que el objeto de entrada. Si es un Series o DataFrame, devuelve un objeto del mismo tipo; si es un escalar, devuelve un único valor booleano.
  • Efecto: Para valores no faltantes devuelveTrue, para valores faltantes devuelveFalse。

Ejemplos

A través de una serie de ejemplos, de simples a complejos, dominaremos por completopd.notna()el uso de.

Ejemplo 1: Uso básico - Detectar valores faltantes en escalares y listas

Ejemplo

import pandas as pd
import numpy as np

# 1. Detectar si un valor escalar es un valor no faltante
print("=== Detección de escalares ===")
print(f"pd.notna(10): {pd.notna(10)}")              # Valor numérico normal -> True
print(f"pd.notna('ejemplo'): {pd.notna('ejemplo')}")  # Cadena de texto normal -> 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. Detectar valores faltantes en listas
print("\n=== Detección de listas ===")
data_list = [1, 2, np.nan, 'ejemplo', None, 5]
result = pd.notna(data_list)
print(f"Lista original: {data_list}")
print(f"Resultado de la detección: {result.tolist()}")  # Convertir a lista para facilitar la visualización

Resultado esperado de la ejecución:

=== 标量检测 ===
pd.notna(10): True
pd.notna('ejemplo'): True
pd.notna(None): False
pd.notna(np.nan): False

=== 列表检测 ===
原始列表: [1, 2, nan, 'ejemplo', None, 5]
检测结果: [True, False, True, False, True]

Análisis del código:

  1. pd.notna(10)ypd.notna('ejemplo')Detecta valores numéricos y cadenas normales, devuelveTrue。
  2. pd.notna(None)ypd.notna(np.nan)Detecta los marcadores de valores faltantes de Python y NumPy, devuelveFalse。
  3. Al usar sobre listaspd.notna()se devuelve una lista booleana, y las posiciones de los valores faltantes sonFalse。

Ejemplo 2: Detectar valores faltantes en Series

Al procesar datos de tipo Series,pd.notna()puede localizar rápidamente los datos válidos.

Ejemplo

import pandas as pd
import numpy as np

# Crear un Series con valores faltantes
s = pd.Series([1, 2, np.nan, 4, None, 'ejemplo', np.nan])

print("=== Series original ===")
print(s)
print(f"\nTipo: {type(s)}")

# Usar pd.notna() para detectar
print("\n=== Resultado de la detección con pd.notna() ===")
result = pd.notna(s)
print(result)

# Usar el método notna() del Series (efecto equivalente)
print("\n=== Detección con el método s.notna() ===")
print(s.notna())

# Filtrar los valores no faltantes
print("\n=== Filtrado de valores no faltantes ===")
print(s[s.notna()])

Resultado esperado de la ejecución:

=== 原始 Series ===
0       1
1       2
2     NaN
3       4
4    None
5    ejemplo
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    ejemplo
dtype: object

Análisis del código:

  • pd.notna(s)ys.notna()Ambos pueden detectar los valores faltantes en el Series y devolver un Series booleano.
  • Utilizando la indexación booleanas[s.notna()]se pueden filtrar rápidamente todos los elementos que no son valores faltantes, lo cual es muy útil en la limpieza de datos.

Ejemplo 3: Detectar valores faltantes en DataFrame

Al procesar datos tabulares,pd.notna()puede conocer rápidamente el grado de completitud de los datos.

Ejemplo

import pandas as pd
import numpy as np

# Crear un DataFrame con valores faltantes
df = pd.DataFrame({
    'name': ['Alice', 'Bob', None, 'Diana'],
    'age': [25, np.nan, 30, 28],
    'score': [85, 90, np.nan, 95]
})

print("=== DataFrame original ===")
print(df)

# Detectar todo el DataFrame
print("\n=== Resultado de la detección con pd.notna() ===")
print(pd.notna(df))

# Detectar el número de valores faltantes por columna
print("\n=== Número de valores no faltantes por columna ===)
print(df.notna().sum())

# Detectar el número de valores faltantes por fila
print("\n=== Número de valores no faltantes por fila ===)
print(df.notna().sum(axis=1))

# Calcular la proporción de valores faltantes
print("\n=== Proporción de valores faltantes ===)
missing_ratio = df.isna().mean()
print(missing_ratio)

Resultado esperado de la ejecución:

=== 原始 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

Análisis del código:

  • pd.notna(df)Devuelve un DataFrame booleano con la misma forma que el DataFrame original, donde cada posición indica si es un valor no faltante.
  • df.notna().sum()Cuenta el número de valores no faltantes en cada columna.
  • df.isna().mean()Calcula la proporción de valores faltantes en cada columna, lo que ayuda a evaluar la calidad de los datos.

Consejo: pd.notna()ypd.isna()Tienen una relación mutuamente opuesta.pd.notna()En las posiciones donde devuelve True,pd.isna()devuelve False, y viceversa.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones