Manejo de datos faltantes en Pandas: Explicación de los valores de NaN

Manejo de datos faltantes en Pandas: Explicación de los valores de NaN

  • Inteligencia artificial
6 min de lectura Actualizado Dec 23, 2020

Puntos clave: Gestionar los datos faltantes en Pandas implica comprender los valores de NaN y utilizar funciones como fillna(), dropna() e interpolate() para una gestión eficaz.

  • NaN representa datos perdidos, distintos de ninguno.
  • Los métodos incluyen eliminar filas/columnas o rellenar valores adecuadamente.

En ciencia de datos aplicada, normalmente te faltarán datos. Por ejemplo, una aplicación industrial con sensores tendrá datos de sensores que están ausentes en ciertos días.

te un par de alternativas para trabajar con datos que faltan. te pueden:

  • Quita toda la fila
  • Rellena la combinación fila-columna con algún valor

No tendría Haz de eliminar la columna porque eso eliminaría esa métrica para todas las filas. Así que, veamos cómo manejar estos escenarios.

NaN significa datos perdidos

Los datos que faltan están etiquetados como NaN.

Ten en cuenta que np.nan no están igual a Python None. Ten en cuenta también que np.nan ni siquiera están a np.nan, ya que np.nan básicamente significa indefinido.

Aquí Haz un dataframe con 3 columnas y 3 filas. El array np.arange(1,4) se están copiado en cada fila.

Resultados:

Nat

    import pandas as pd
import numpy as np
df = pd.DataFrame([np.arange(1,4)],index=['a','b','c'],
columns=["X","Y","Z"]) 

Resultados:

Ahora reindexa este array sumando un índice d. Como d no tiene valor, se está rellenado con NaN.

    df.reindex(index=['a','b','c','d'])

isna

Ahora utiliza isna para comprobar si falta valores.

    pd.isna(df)

Notna

La comprobación opuesta —buscar valores reales— están notna().

    pd.notna(df)

NAT significa una fecha perdida.

    df['time'] = pd.Timestamp('20211225')
df.loc['d'] = np.nan

Fillna

Aquí podemos rellenar los valores de NaN con el entero 1 usando fillna(1). La columna de fecha no está cambiada ya que el entero 1 no está una fecha.

    df=df.fillna(1)

Para solucionar eso, rellena los valores de tiempo vacíos con:

    df['time'].fillna(pd.Timestamp('20221225'))

dropna()

dropna() significa dejar filas o columnas cuyo valor están vacío. Otra forma de decir que están mostrar solo filas o columnas que no son vacías.

Aquí rellenamos la fila c con NaN:

    df = pd.DataFrame([np.arange(1,4)],index=['a','b','c'],
columns=["X","Y","Z"])
df.loc['c']=np.NaN

Luego pasa dropna sobre el eje de la fila (eje = 0).

    df.dropna()

te también podía escribir:

    df.dropna(axis=0)

Todas las filas excepto c fueron eliminadas:

Para dejar la columna:

Para dejar la columna:

    df = pd.DataFrame([np.arange(1,4)],index=['a','b','c'],
columns=["X","Y","Z"])
df['V']=np.NaN
    df.dropna(axis=1)

Otra característica de Pandas están que rellena los valores que faltan usando lo que están lógico.

considera una serie temporal—digamos que te monitoriza alguna máquina y en ciertos días no informa de nada. Debajo informa en Navidad y en cada dos días de esa semana. Luego reindexamos la serie Pandas, creando lagunas en nuestra línea temporal.

    import pandas as pd
import numpy as np
arr=np.array([1,2,3])
idx=np.array([pd.Timestamp('20211225'),
pd.Timestamp('20211227'),
pd.Timestamp('20211229')])
df = pd.DataFrame(arr,index=idx)
idx=[pd.Timestamp('20211225'),
pd.Timestamp('20211226'),
pd.Timestamp('20211227'),
pd.Timestamp('20211228'),
pd.Timestamp('20211229')]
df=df.reindex(index=idx)

Interpolar

Utilizamos la función interpolate(). Pandas los rellena bien usando los puntos medios entre los puntos. Por supuesto, si esto fuera curvilíneo, ajustaría una función a eso y encontraría la media de otra manera.

    df=df.interpolate()

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Inteligencia artificial

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.