No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Imputación básica de datos

19/21
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Hay un minimo detallle con la asignacion de una columna de valores imputados, y es que esta columna representa exactamente lo mismo que la columna BMI_NA, solo que con distinto nombre, esto debido a que para calcular el BMI, si o si hay que tener el valor de altura y del peso, si alguno de los dos falta, no podemos calcular el valor del BMI, por lo cual las filas de BMI estarian sin ese dato si alguna de estas dos columnas tenian dato faltante, es un detalle de mera casualidad, ya que el proceso realizado por el profesor es el correcto.

hue="bmi_NA"

# Genera el mismo scatterplot.

Pero esto en un caso en que se tomen varias columnas no relacionadas, no sucedera.

Imputacion con base en el contexto

Implica conocer la estructura de los datos por lo que podemos completar las entradas vacias. Para este ejemplo, tenemos un conjunto de datos:

implicit_to_explicit_df = pd.DataFrame(
    data={
        "name": ["lynn", np.nan, "zelda", np.nan, "shadowsong", np.nan],
        "time": ["morning", "afternoon", "morning", "afternoon", "morning", "afternoon",],
        "value": [350, 310, 320, 350, 310, 320]
    }
)

implicit_to_explicit_df

Claramente vemos que los valores de name podemos rellenarlos debido a que el contexto nos indica que son los nombres de la celda de arriba

implicit_to_explicit_df.ffill() #Rellena los nan con los valores de la celda de arriba

Imputacion Basica de Datos

Consiste en reemplazar los valores faltantes por algun valor, bien sea estadistico, algun valor por contexto o valores obtenidos mediante un modelo de Machine Learning

Imputacion de un unico valor

Se da cuando el contexto no ayuda a completar un valor faltante y por tanto requieres imputar un unico valor con algun estadistico

  • Para este ejemplo, utilizamos del dataframe riskfactors solo las variables Peso, Altura y bmi. Aplicamos el valor promedio a los valores faltantes de cada columna y al mismo tiempo creamos la shadow matrix para luego graficar
(
    riskfactors_df
    .select_columns('weight_lbs', 'height_inch', 'bmi')
    .missing.bind_shadow_matrix(true_string=True, false_string=False) 
    .apply(
        axis = 'rows',
        func = lambda column: column.fillna(column.mean()) if '_NA' not in column.name else column
    )
)
  • Ahora graficamos los datos con los valores imputados y obtenemos un grafico donde podemos observar que los valores imputados tienen valores que estan en la media de los datos
#Grafica de los datos con los valores imputados
(
    riskfactors_df
    .select_columns('weight_lbs', 'height_inch', 'bmi')
    .missing.bind_shadow_matrix(true_string=True, false_string=False) 
    .apply(
        axis = 'rows',
        func = lambda column: column.fillna(column.mean()) if '_NA' not in column.name else column
    )
    .pipe(
        lambda df: (
            sns.displot(
                data=df,
                x='weight_lbs',
                hue='weight_lbs_NA'
            )
        )
    )
)