Introducción a Pandas – Lección 4

Compartir esta publicación

Introducción

Comenzamos con el cuarto y último artículo de nuestra saga de entrenamiento con Pandas. En este artículo vamos a hacer un resumen de las diferentes funciones que se utilizan en Pandas para realizar el tratamiento de los datos perdidos. El tratamiento de los datos perdidos es clave y un reto habitual en el día a día del trabajo de ciencia de datos, y tiene un impacto directo sobre el rendimiento de los algoritmos.

Datos que faltan

Antes de empezar, vamos a visualizar un poco el dataset de ejemplo que vamos a seguir para explicar las funciones. Es un dataset creado por nosotros que incluye varios casos de uso para poder tratar con claridad todos los ejemplos que llamaremos `uncompleted_data`.

sEXRNqiQHd0A mmi4Acn7ITZHGk4r0VCyKnAj2JuK8WfzVQxvHMnTWtz n9EOoc8RYbWxe63yy9X9OIOdKt9ew6Y 7HbfGwQRFipd83zdGm5X6

Es importante aclarar qué es un dato que falta o cómo se identifica. Tenemos diferentes valores para esto:

  + Nan en matrices numéricas

  + Nada o NaN en matrices de objetos

  + Nat en objetos datetime

Isna

Comenzamos con la función isna(). Esta función toma un objeto escalar o tipo array e indica si faltan valores. Para la entrada escalar, devuelve un booleano escalar. Para la entrada de un array, devuelve un array de booleanos indicando si falta cada elemento correspondiente.

En este caso vamos a detectar los valores que faltan en la columna «uno» utilizando la función `isna()`:

uncompleted_data['one'].isna()
    
a    False
b    False
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

Notna

Continuamos con la función notna(). Esta función toma un objeto escalar o tipo array e indica si los valores son válidos (no faltan). Para la entrada escalar, devuelve un booleano escalar. Para la entrada de un array, devuelve un array de booleanos indicando si cada elemento correspondiente es válido. En pocas palabras, es la operación inversa de isna().

  Automatizando test de Postman con JMeter

Por ejemplo, vamos a detectar los valores que faltan en la columna «uno» utilizando la función `notna()`:

uncompleted_data['one'].notna()
    
a     True
b     True
c     True
d    False
e     True
f     True
g    False
h     True
Name: one, dtype: bool

Presta atención al hecho de que isna() y notna() son totalmente opuestas dependiendo de la funcionalidad que quieras conseguir, y lo que tienen en común es que ambas devuelven un boolean.

Fillna

Esta función es una de las más utilizadas en la limpieza de datos, ya que es útil para la búsqueda y sustitución de los valores considerados como ausentes.

Vamos a mostrar dos ejemplos muy comunes de sustituciones. El primero es para reemplazar por un valor específico pasado como argumento y el segundo es para un valor calculado del conjunto de datos como la media. También podríamos rellenar con otros valores como la moda.

+ Sustituir los valores que faltan por 0:

uncompleted_data['one'].fillna(0)
    
a    0.743352
b   -1.349393
c    1.461743
d    0.000000
e   -0.149122
f   -0.601538
g    0.000000
h   -0.898242
Name: one, dtype: float64

+ Sustituir los valores perdidos por la media:

uncompleted_data['one'].fillna(uncompleted_data['one'].mean())
    
a    0.743352
b   -1.349393
c    1.461743
d   -0.132200
e   -0.149122
f   -0.601538
g   -0.132200
h   -0.898242
Name: one, dtype: float64

Dropna

Esta función se utiliza para eliminar las filas o columnas que contienen valores perdidos. Esta función eliminará todas las filas que contengan algún valor ausente en cualquiera de las columnas.

+ Eliminar las filas que contienen valores perdidos:

uncompleted_data.dropna(axis=0)

N9RDuGgxqY1Dgmx4e Geg5lrd O51k50 IRXoNkoApPIn7FFfF11AwPLwzjtpHIi1nK0 ux2BE041PY8kWorp2EdY64M5e warYZ52cA5gzGtIFX4hKRuTTZPQSOJEv4uXMVyJ01=s0

+ Eliminar las columnas que contienen valores perdidos:

uncompleted_data.dropna(axis=1)

EWa0q21avESBjYpLQLudz V6yPB7

Interpolate

Esta función se utiliza para reemplazar los valores perdidos utilizando un método de interpolación. La interpolación es un tipo de estimación, un método para construir (encontrar) nuevos puntos de datos basados en el rango de un conjunto discreto de puntos de datos conocidos.

  Arquitectura de triángulo invertido para CSS (ITCSS)

En este ejemplo vamos a reemplazar los valores perdidos de la columna `uno` utilizando el método de interpolación `lineal` por defecto.

fwN0dGpYgJWwqxUUO99TQOKjWshUGyknmxo RmHuNS 098U2Yj1Dtroyq6Sg6kyhQr3NkXVw KNmPndEvQ0POdw

PbcLKaGaN oe8IhxUFQUMZD5Ja K0w

Fig. 1. Impresión de datos antes y después de la interpolación. La función de interpolación genera datos siguiendo un patrón dentro del rango de datos conocidos.

+ Después

uncompleted_data['one'].interpolate()

Replace

Esta función, como su nombre indica, se utiliza para sustituir un valor por otro, pero en este caso vamos a explicar uno de sus usos más útiles. Se basa en el uso de esta función en combinación con expresiones regulares.

En este ejemplo vamos a sustituir por np.nan todos los valores que estén dentro del rango [0,1):

to_replace.replace(r"^0\.[0-9]*", np.nan, regex=True)


a                    NaN
b     -1.349393388281627
c     1.4617427030378465
d                    nan
e    -0.1491215416722299
f    -0.6015382564614734
g                    nan
h    -0.8982420093440403
Name: one, dtype: object

Entrenando tus habilidades

Si quieres llevar tus habilidades un paso más en Ciencia de Datos, hemos creado un curso que puedes descargar gratuitamente aquí.

Author

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Suscríbete a nuestro boletín de noticias

Recibe actualizaciones de los últimos descubrimientos tecnológicos

¿Tienes un proyecto desafiante?

Podemos trabajar juntos

apiumhub software development projects barcelona
Secured By miniOrange