Pandas df.dropna() función

Pandas 常用函数Funciones comunes de Pandas


df.dropna()es una función en Pandas que se utiliza para eliminar filas o columnas que contienen valores faltantes.

es un problema común.NaN、NoneoNULL) es un problema común.dropna()La función proporciona una forma sencilla de limpiar los datos; puedes elegir eliminar filas o columnas que contengan valores faltantes, o filtrar los datos según la proporción de valores faltantes.


Sintaxis básica y parámetros

dropna()es una función miembro de DataFrame, mediante el operador punto.para invocarla.

Formato de sintaxis

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

Descripción de parámetros

Parámetro Tipo Obligatorio Descripción Valor predeterminado
axis int o str Opcional Especifica si se eliminan filas o columnas.0o'index'Indica eliminar filas con valores faltantes;1o'columns'Indica eliminar columnas con valores faltantes. 0
how str Opcional Especifica la condición de eliminación.'any'Indica eliminar si hay cualquier valor faltante;'all'Indica eliminar solo si todos son valores faltantes. 'any'
thresh int Opcional Establece el número mínimo de valores no faltantes. Si el número de valores no faltantes en la fila (o columna) es menor quethresh, se elimina esa fila (o columna). None
subset array-like Opcional Especifica en qué columnas (o filas) revisar valores faltantes. Siaxis=0, entoncessubsetespecifica nombres de columnas; siaxis=1, entoncessubsetespecifica índices de filas. None
inplace bool Opcional Si esTrue, modifica directamente el DataFrame original, no devuelve un nuevo objeto; si esFalse, devuelve un nuevo DataFrame, los datos originales no cambian. False

Descripción del valor de retorno

  • Devuelve un nuevo DataFrame (siinplace=False), oNone(siinplace=True)。
  • el DataFrame devuelto no contiene filas o columnas con valores faltantes.

Ejemplos

Vamos a dominar completamente mediante una serie de ejemplosdropna()el uso de.

Ejemplo 1: Eliminar filas con valores faltantes

Este es el uso más común: eliminar cualquier fila que contenga valores faltantes.

Ejemplo

import pandas as pd
import numpy as np

# Crear un DataFrame con valores faltantes
data = {
    'Nombre': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    'Edad': [25, 30, np.nan, 35, 28],  # La edad de Wang Wu falta
    'Salario': [5000, 6000, 5500, np.nan, 7000],  # El salario de Zhao Liu falta
    'Departamento': ['Tecnología', 'Mercado', 'Tecnología', 'Mercado', 'Tecnología']
}
df = pd.DataFrame(data)

print("datos originales:")
print(df)
print("=" * 50)

# Eliminar filas con valores faltantes (comportamiento predeterminado)
df_cleaned = df.dropna()

print("Datos después de eliminar los valores faltantes:")
print(df_cleaned)

Resultado esperado:

原始数据:
    姓名   年龄    薪资  部门
0  张三  25.0  5000.0  技术
1  李四  30.0  6000.0  市场
2  王五   NaN  5500.0  技术
3  赵六  35.0     NaN  市场
4  钱七  28.0  7000.0  技术
==================================================
删除缺失值后的数据:
    姓名   年龄    薪资  部门
0  张三  25.0  5000.0  技术
1 李四  30.0  6000.0  市场
4  钱七  28.0  7000.0  技术

Análisis del código:

  1. Creamos un DataFrame con valores faltantes, donde la edad de Wang Wu esNaN, el salario de Zhao Liu esNaN。
  2. Usandodf.dropna()con el parámetro predeterminado, se eliminaron todas las filas con valores faltantes.
  3. El resultado conserva los datos de Zhang San, Li Si y Qian Qi; elimina a Wang Wu y Zhao Liu.

Ejemplo 2: Eliminar columnas con valores faltantes

A veces nos interesa más qué columnas tienen valores faltantes, y podemos optar por eliminar columnas.

Ejemplo

import pandas as pd
import numpy as np

# Crear un DataFrame con valores faltantes
data = {
    'Nombre': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Edad': [25, 30, 35, 40],
    'Salario': [5000, np.nan, 5500, np.nan],  # Varias columnas tienen valores faltantes
    'Departamento': [np.nan, 'Mercado', 'Tecnología', 'Mercado'],
    'Ciudad': ['Pekín', Shanghái, 'Guangzhou', 'Shenzhen']  # Sin valores faltantes
}
df = pd.DataFrame(data)

print("datos originales:")
print(df)
print("=" * 50)

# Eliminar columnas con valores faltantes
df_cleaned = df.dropna(axis=1)

print("Datos después de eliminar las columnas con valores faltantes:")
print(df_cleaned)

Resultado esperado:

原始数据:
    姓名  年龄    薪资  部门  城市
0  张三  25  5000.0  NaN  北京
1  李四  30     NaN  市场  上海
2  王五  35  5500.0  技术  广州
3  赵六  40     NaN  市场  深圳
==================================================
删除缺失值列后的数据:
    姓名  年龄  城市
0  张三  25  北京
1  李四  30  上海
2  王五  35  广州
3  赵六  40  深圳

Análisis del código:

  • Configurandoaxis=1indica operación por columnas.
  • Las columnas de salario y departamento contienen valores faltantes, por lo tanto se eliminan.
  • Las columnas de nombre, edad y ciudad no tienen valores faltantes, por lo que se conservan.

Ejemplo 3: Usar el parámetro thresh para controlar la condición de eliminación

threshEl parámetro thresh permite establecer el número mínimo de valores no faltantes; solo se elimina cuando el número de valores no faltantes en la fila (o columna) es inferior a este umbral.

Ejemplo

import pandas as pd
import numpy as np

# Crear un DataFrame donde cada fila tiene algunos valores faltantes
data = {
    'A': [1, 2, np.nan, 4, 5],
    'B': [np.nan, 2, 3, 4, np.nan],  # Tiene 2 valores faltantes
    'C': [1, 2, 3, 4, 5],  # Sin valores faltantes
    'D': [np.nan, np.nan, np.nan, 4, 5]  # Tiene 3 valores faltantes
}
df = pd.DataFrame(data)

print("datos originales:")
print(df)
print("=" * 50)

# Conservar solo las filas con al menos 3 valores no faltantes
df_cleaned = df.dropna(thresh=3)

print(Conservar filas con al menos 3 valores no faltantes:)
print(df_cleaned)

Resultado esperado:

原始数据:
     A    B  C    D
0  1.0  NaN  1.0  NaN
1  2.0  2.0  2.0  NaN
2  NaN  3.0  3.0  NaN
3  4.0  4.0 4.0  4.0
4  5.0  NaN  5.0  5.0
==================================================
保留至少3个非缺失值的行:
     A    B  C    D
1  2.0  2.0  2.0  NaN
3  4.0  4.0 4.0  4.0

Análisis del código:

  • La fila 0 solo tiene 1 valor no faltante (1.0), se elimina.
  • La fila 1 tiene 3 valores no faltantes (2.0, 2.0, 2.0), se conserva.
  • La fila 2 solo tiene 2 valores no faltantes (3.0, 3.0), se elimina.
  • La fila 3 tiene 4 valores no faltantes, se conserva.
  • La fila 4 solo tiene 3 valores no faltantes (5.0, 5.0, 5.0), se conserva.

Ejemplo 4: Usar subset para especificar las columnas a revisar

A veces solo nos interesa si ciertas columnas tienen valores faltantes, podemos usarsubsetel parámetro.

Ejemplo

import pandas as pd
import numpy as np

# Crear un DataFrame
data = {
    'Nombre': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Edad': [25, np.nan, 35, 40],  # La edad de Li Si falta
    'Salario': [5000, 6000, np.nan, 8000],  # El salario de Wang Wu falta
    'Departamento': ['Tecnología', 'Mercado', 'Tecnología', 'Mercado']
}
df = pd.DataFrame(data)

print("datos originales:")
print(df)
print("=" * 50)

# Solo revisar valores faltantes en las columnas 'nombre' y 'departamento'
df_cleaned = df.dropna(subset=['Nombre', 'Departamento'])

print(Datos después de comprobar valores faltantes solo en las columnas de nombre y departamento:)
print(df_cleaned)
print("=" * 50)

# Solo revisar valores faltantes en la columna 'salario'
df_cleaned2 = df.dropna(subset=['Salario'])

print("Datos después de verificar valores faltantes solo en la columna de salario:")
print(df_cleaned2)

Resultado esperado:

原始数据:
    姓名   年龄    薪资  部门
0  张三  25.0  5000.0  技术
1  李四   NaN  6000.0  市场
2  王五  35.0     NaN  技术
3  赵六  40.0  8000.0  市场
==================================================
只在姓名和部门列检查缺失值后的数据:
    姓名   年龄    薪资  部门
0  张三  25.0  5000.0  技术
1  李四   NaN  6000.0  市场
2  王五  35.0     NaN  技术
3  赵六  40.0  8000.0  市场
==================================================
只在薪资列检查缺失值后的数据:
    姓名   年龄    薪资  部门
0  张三  25.0  5000.0  技术
1  李四  30.0  6000.0  市场
3  赵六  40.0  8000.0  市场

Análisis del código:

  • Las columnas de nombre y departamento no tienen valores faltantes, por lo que después de la revisión se conservan todas las filas.
  • En la columna de salario, el salario de Wang Wu esNaN, por lo tanto, la fila 2 se elimina.

Ejemplo 5: Usar how='all' para eliminar solo filas con todos los valores faltantes

how='all'El parámetro how='all' indica que solo se elimina cuando todos los valores en la fila (o columna) son valores faltantes.

Ejemplo

import pandas as pd
import numpy as np

# Crear un DataFrame que contenga algunas filas con todos los valores faltantes
data = {
    'A': [1, np.nan, np.nan, 4],
    'B': [2, np.nan, np.nan, 5],
    'C': [3, np.nan, np.nan, 6]
}
df = pd.DataFrame(data)

print("datos originales:")
print(df)
print("=" * 50)

# Eliminar filas con todos los valores faltantes
df_cleaned = df.dropna(how='all')

print("Después de eliminar filas con todos los valores faltantes:")
print(df_cleaned)

Resultado esperado:

原始数据:
     A    B    C
0  1.0  2.0  3.0
1  NaN  NaN  NaN
2  NaN  NaN  NaN
3  4.0  5.0  6.0
==================================================
删除全部为缺失值的行后:
     A    B    C
0  1.0  2.0  3.0
3  4.0  5.0  6.0

Análisis del código:

  • Las filas 1 y 2 tienen todos los valoresNaN, usandohow='all'se eliminan.
  • Las filas 0 y 3 tienen datos reales y se conservaron.

Notas

  • dropna()Por defecto no se modifica el DataFrame original; si desea modificarlo en el lugar, useinplace=Trueparámetro.
  • Usandothreshel parámetro, el valor establecido debe basarse en sus requisitos de calidad de datos.
  • Antes de eliminar datos, se recomienda usardf.isnull().sum()para ver la cantidad de valores faltantes en cada columna y tomar una decisión más informada.
  • Para conjuntos de datos importantes, use con precaucióndropna(), ya que esto puede provocar una gran pérdida de datos; considere usarfillna()para rellenar los valores faltantes.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones