Función Pandas pd.notna()
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 incluyen
None、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 devuelve
True, 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 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:
pd.notna(10)ypd.notna('ejemplo')Detecta valores numéricos y cadenas normales, devuelveTrue。pd.notna(None)ypd.notna(np.nan)Detecta los marcadores de valores faltantes de Python y NumPy, devuelveFalse。- Al usar sobre listas
pd.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 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 booleana
s[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 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.
Otras extensionesConsejo:
pd.notna()ypd.isna()Tienen una relación mutuamente opuesta.pd.notna()En las posiciones donde devuelve True,pd.isna()devuelve False, y viceversa.
Funciones comunes de Pandas