Función Pandas pd.isna()
pd.isna()Es la función de detección de valores faltantes más utilizada en Pandas; comprueba si cada elemento es un valor faltante y devuelve un valor booleano (TrueoFalse) estructura.
En el análisis de datos, el manejo de los valores faltantes es un primer paso muy importante.pd.isna()Puede ayudarte a identificar rápidamente las posiciones faltantes en los datos, proporcionando la base para operaciones posteriores de relleno, eliminación u otros procesamientos.
Sintaxis básica y parámetros
Formato de sintaxis
pandas.isna(obj)
Descripción de parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| obj | DataFrame、Series、scalar、list、tuple | El objeto en el que se deben verificar los valores faltantes; puede ser cualquier tipo de datos compatible. |
Descripción del valor de retorno
- Devuelve un objeto booleano con la misma estructura que la entrada:
- Si la entrada es un DataFrame, devuelve un DataFrame de valores booleanos
- Si la entrada es una Series, devuelve una Series de valores booleanos
- Si la entrada es un valor único, devuelve un valor booleano escalar
Ejemplos
Vamos a dominar completamente, a través de una serie de ejemplos de simples a complejos,pd.isna()el uso de esta función.
Ejemplo 1: Detectar valores faltantes en una Series
Ejemplo
import numpy as np
# Crear una Series que contenga valores faltantes
s = pd.Series([1, 2, np.nan, 4, None, 6])
# Detectar valores faltantes
result = pd.isna(s)
print("Series original:")
print(s)
print("\nResultado de la detección:")
print(result)
Resultado de la ejecución:
原始 Series: 0 1.0 1 2.0 2 NaN 3 4.0 4 NaN 5 6.0 dtype: float64 检测结果: 0 False 1 False 2 True 3 False 4 True 5 False dtype: bool
Análisis del código:
np.nanyNoneTodos son reconocidos como valores faltantes.- En la Series booleana devuelta, las posiciones de valores faltantes son
True, las posiciones de valores no faltantes sonFalse
Ejemplo 2: Detectar valores faltantes en un DataFrame
Ejemplo
import numpy as np
# Crear un DataFrame que contenga valores faltantes
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': ['a', None, 'c', 'd'],
'C': [pd.NaT, 6, 7, 8] # NaT es un valor faltante del tipo datetime
})
# Detectar valores faltantes
result = pd.isna(df)
print("DataFrame original:")
print(df)
print("\nResultado de la detección:")
print(result)
Resultado de la ejecución:
原始 DataFrame:
A B C
0 1.0 a None
1 2.0 None 6
2 NaN c 7
3 4.0 d 8
dtype: object
检测结果:
A B C
0 False False True
1 False True False
2 True False False
3 False False False
Análisis del código:
pd.NaT(Not a Time) es el valor faltante del tipo datetime, también se identifica correctamente.- Cada posición del DataFrame devuelve el valor booleano correspondiente.
Ejemplo 3: Contar la cantidad de valores faltantes
En el análisis de datos real, a menudo necesitamos saber cuántos valores faltantes hay.
Ejemplo
import numpy as np
# Crear datos
df = pd.DataFrame({
'A': [1, np.nan, 3, np.nan, 5],
'B': [np.nan, 2, np.nan, 4, np.nan],
'C': [1, 2, 3, 4, 5]
})
# Contar la cantidad de valores faltantes por columna
print("Cantidad de valores faltantes por columna:")
print(pd.isna(df).sum())
print("\nCantidad total de valores faltantes:", pd.isna(df).sum().sum())
# Calcular la proporción de valores faltantes
print("\nProporción de valores faltantes:")
print((pd.isna(df).sum() / len(df) * 100).round(2), "%")
Resultado de la ejecución:
每列缺失值数量: A 2 B 3 C 0 dtype: int64 总缺失值数量: 5 缺失值比例: A 40.0 B 60.0 C 0.0 %
Ejemplo 4: Uso combinado con otras funciones
Ejemplo
import numpy as np
# Crear datos
df = pd.DataFrame({
'name': ['Alice', 'Bob', None, 'Diana', 'Eve'],
'age': [25, None, 35, 28, None],
'score': [85, 90, 78, 92, 88]
})
# Usar isna para filtrar las filas que contienen valores faltantes
rows_with_na = df[pd.isna(df).any(axis=1)]
print("Filas que contienen valores faltantes:")
print(rows_with_na)
# Usar isna para rellenar valores faltantes
df_filled = df.fillna({
'name': 'Unknown',
'age': df['age'].mean(), # Rellenar la edad con el valor promedio
'score': 0
})
print("\nDataFrame después del relleno:")
print(df_filled)
Resultado de la ejecución:
包含缺失值的行:
name age score
0 Alice 25.0 85
2 None 35.0 78
3 Diana 28.0 92
填充后的 DataFrame:
name age score
0 Alice 25.0 85
1 Bob 29.0 90
2 Unknown 35.0 78
3 Diana 28.0 92
4 Eve 0.0 88
Notas importantes
Aviso importante:
pd.isna()Identificará los siguientes valores como valores faltantes:
np.nan- Valores faltantes de tipo numéricoNone- El objeto None nativo de Pythonpd.NaT- Valores faltantes de tipo datetime
Para cadenas vacías""o0,pd.isna()devolveráFalse, porque no son valores faltantes.
Otras extensiones
Funciones comunes de Pandas