No tienes acceso a esta clase

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

Aprende Inglés, Programación, AI, Ciberseguridad y más a precio especial.

Antes: $249

Currency
$209
Suscríbete

Termina en:

2 Días
20 Hrs
51 Min
15 Seg

Imputación por interpolación

11/17
Recursos

Aportes 12

Preguntas 0

Ordenar por:

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

Creo que el metodo akima puede funcionar por Makima
Lectura

method='akima'
method='pchip'

Codigo incluido en libreria missing

    def interpolate_plot(
        self,
        column_name,
        met: str="linear",
        line_color: str = "orange"
        ) -> pd.DataFrame:
        return (
            self._obj.select_columns(column_name)
            .pipe(lambda df: (
                df[column_name].interpolate(method=met).plot(color = line_color, marker = 'o', alpha = 6/9, linestyle = 'dashed'),
                df[column_name].plot(color = '#000000', marker = 'o')
            ))
        )

Interpolacion por llenado

# utilizamos la imputacion por relleno hacia adelante

plt.figure(figsize=(20,10))

(
    airquality_df
    .select_columns('ozone')    # variable de interes
    .pipe(                      # graficamos los puntos del ozono
        lambda df: (
            df.ozone.ffill().plot(
                color='red',
                marker = 'o',
                alpha=6/9,
                linestyle='dashed'
            ),
            df.ozone.plot(
                color='#313638',
                marker='o'
            )
        )
    )
)

Toma el valor del punto anterior y lo rellena hacia adelante. Esta imputacion no sigue el comportamiento de los datos por lo que no es la mas adecuada.

3. Imputacion por Interpolacion

Consiste en estimar los valores faltantes mediante puntos en el graficos que representan valores completos. La interpolacion tiene distintas formas de realizarse:

  • Por linea recta en cuyo caso es un metodo basado en un Modelo Lineal
  • Por llenado hacia atras o hacia adelante que consiste en rellenar los valores faltantes con los valores completos sucesor o antecesor y es un metodo basado en Donantes.

Ventajas

  • Sencillo de implementar
  • Es muy util para series de tiempo
  • Posee una variabilidad de oociones al alcance. Puedes interpolar de multiples maneras

Desventajas

  • Puede romper las relaciones entre las variables. Depende del metodo de interpolacion a utilizar
  • Puede introducir valores fuera de rango

Interpolacion cuadratica

# utilizamos el metodo cuadratico de interpolate()

plt.figure(figsize=(20,10))

(
    airquality_df
    .select_columns('ozone')    # variable de interes
    .pipe(                      # graficamos los puntos del ozono
        lambda df: (
            df.ozone.interpolate(method = 'quadratic').plot(
                color='red',
                marker = 'o',
                alpha=6/9,
                linestyle='dashed'
            ),
            df.ozone.plot(
                color='#313638',
                marker='o'
            )
        )
    )
)

Establece una relacion cuadratica de interpolacion. A pesar que se ajusta bien en los datos, tiende a crear puntos fuera del comportamiento habitual lo que indica que no es una buena imputacion. Valores de ozonos por debajo de cero

Interpolacion Lineal

# utilizamos el metodo lineal de interpolate()

plt.figure(figsize=(20,10))

(
    airquality_df
    .select_columns('ozone')    # variable de interes
    .pipe(                      # graficamos los puntos del ozono
        lambda df: (
            df.ozone.interpolate(method = 'linear').plot(
                color='red',
                marker = 'o',
                alpha=6/9,
                linestyle='dashed'
            ),
            df.ozone.plot(
                color='#313638',
                marker='o'
            )
        )
    )
)

Genera una linea recta entre dos puntos conocidos para establecer los puntos que son desconocidos. La imputacion lineal si se ajusta al comportamiento de los datos

Interpolacion con valores mas cercanos

# utilizamos el metodo cuadsratico de interpolate()

plt.figure(figsize=(20,10))

(
    airquality_df
    .select_columns('ozone')    # variable de interes
    .pipe(                      # graficamos los puntos del ozono
        lambda df: (
            df.ozone.interpolate(method = 'nearest').plot(
                color='red',
                marker = 'o',
                alpha=6/9,
                linestyle='dashed'
            ),
            df.ozone.plot(
                color='#313638',
                marker='o'
            )
        )
    )
)

Utiliza el llenado hacia adelante o hacia atras dependiendo de si el valor conocido es mas cercano hacia la izquierda o derecha del valor faltante para luego imputarlo. No se ajusta al comportamiento de los datos

313638, el color magico de Jesus

s/Bard:

Pandas.DataFrame.interpolate: Donantes vs. Modelos

En la biblioteca Pandas, la función DataFrame.interpolate ofrece diversas opciones para realizar interpolación de valores faltantes en un DataFrame. A continuación se clasifican según su enfoque principal:

Métodos basados en donantes:

  • method='linear': Interpolación lineal simple entre los dos puntos más cercanos.
  • method='nearest': Asigna el valor del punto más cercano al punto con valor faltante.
  • method='quadratic': Interpolación cuadrática utilizando los dos puntos más cercanos y el siguiente punto más cercano en la misma dirección.
  • method='cubic': Interpolación cúbica utilizando los dos puntos más cercanos y los dos siguientes puntos más cercanos en la misma dirección.
  • method='krogh': Interpolación de Akima, que utiliza una función cúbica a trozos con restricciones de monotonía.
  • method='spline': Interpolación cúbica con splines de B-spline.

Métodos basados en modelos:

  • method='barycentric': Interpolación baricéntrica, que utiliza una ponderación basada en la distancia de los puntos vecinos.
  • method='polynomial': Interpolación polinomial de orden especificado (parámetro ‘order’).
  • method='pchip': Interpolación cúbica monotónica de Hermite con preservación de la forma local.

Otros métodos:

  • method='index': Interpolación lineal usando el índice del DataFrame.
  • method='pad': Rellena los valores faltantes con el valor del borde más cercano (opción ‘ffill’ para relleno hacia adelante, ‘bfill’ para relleno hacia atrás).

Es importante destacar que algunos métodos pueden combinar elementos de ambos enfoques. Por ejemplo, la interpolación cúbica con splines de B-spline (method='spline') se basa en un modelo matemático, pero también utiliza la información de los puntos vecinos.

La elección del método adecuado dependerá de diversos factores, como:

  • Tamaño del conjunto de datos: Los métodos basados en modelos pueden ser más precisos para conjuntos de datos grandes, mientras que los métodos basados en donantes pueden ser más eficientes para conjuntos de datos pequeños.
  • Patrones en los datos: Los métodos basados en modelos pueden ser más adecuados para conjuntos de datos con patrones complejos, mientras que los métodos basados en donantes pueden ser más robustos para conjuntos de datos con ruido.
  • Precisión requerida: Los métodos basados en modelos pueden ofrecer mayor precisión, pero esto puede implicar un mayor costo computacional.

Se recomienda evaluar diferentes métodos y seleccionar el que mejor se adapte a las necesidades específicas de cada caso.

Manejor de outliers?

En df tenemos 2 valores atípicos, y cuando aplicamos bfill() nos “llenamos” de atípicos que distorsionan en mayor medida nuestros estadísticos

airquality & ffill() vs bfill()