Manipulando datos perdidos en Python

Datos perdidos 1

En la gran mayoría de datos con la que trabajemos es muy probable que nos encontremos con valores perdidos, esto es algo muy normal. El valor faltante puede aparecer de distintas formas por ejemplo como un signo de interrogación, o N/A, como un 0 o simplemente como una celda en blanco, pero en su mayoría nos lo encontramos representado como NaN que se refiere a “no un número”, pero ¿qué podemos hacer en estos casos?

Existen muchas maneras para corregir esto y todo dependerá de la persona que este analizando y obviamente del problema en sí para seleccionar cual es la mejor opción para aplicar. Las opciones típicas que debes considerar son las siguientes:

  • Lo primero que debes hacer es verificar con la persona o grupo que recopiló los datos si es posible que se pueda encontrar el valor real que está faltante.
  • Otra posibilidad es simplemente eliminar los datos donde se encuentra ese valor perdido. Acá tienes dos opciones, la primera sería eliminar la variable faltante o eliminar la fila completa en donde está se encuentre. Esta opción es conveniente en los casos que no se tiene muchos datos faltantes. Toma en cuenta que se debe buscar hacer el menor impacto posible, por lo que se debe tener cuido al momento de eliminar datos.
  • Otra opción es reemplazar los datos, esto se puede hacer calculando el valor promedio de la variable completa, esta es una mejor opción ya que no se desperdician datos, sin embargo, es menos preciso ya que necesitamos reemplazar los datos faltantes con una conjetura que puede ser cierta como puede ser falsa. De igual forma, no siempre se puede calcular el valor del promedio ya que no siempre tenemos datos numéricos puede haber datos categóricos perdidos, para estos casos se sustituye el valor faltante por el más común de esa categoría, es decir el que se repita más veces.
  • Y la última opción que tenemos es simplemente dejar los datos faltantes, así tal cual, como datos perdidos. En ocasiones esta puede ser una buena decisión, por eso se deben analizar cada uno de los casos de manera individual.

Datos perdidos 2

Eliminar datos perdidos

Para este propósito la librería Panda cuanta con un método llamado “Dropna”, el cual consiste en simplemente elegir las filas o columnas que contengas valores faltantes y eliminarlas, para ello se debe escribir los siguiente:

axis = 0 – si quieres eliminar las filas

axis = 1 – si quieres eliminar las columnas

Veamos esto en un ejemplo, utilicemos nuestro dataframe del Titanic, como podemos observar tenemos datos perdidos reflejados como NaN, probemos primero eliminando todas las filas en donde haya datos perdidos.

df.dropna(axis = 0)

Manipulando datos perdidos en Python

Como podemos observar nos elimino varias filas y esto lo vemos en el ID de las filas en donde hay varios saltos en los números, esto indica que los números que acá no aparecen fueron filas que se eliminaron en el procedimiento.

Pero en el caso de que queramos eliminar las filas de todos los datos perdidos ubicados en una solamente columna solamente debemos utilizar el comando “dropna” pero adicionalmente le agregamos la columna como se muestra a continuación.

df.dropna(subset = ["Cabina"], axis = 0)

Manipulando datos perdidos en Python

Como puedes ver se eliminan las filas que contaban datos perdidos en la columna “Cabina” pero no así en el resto de columnas como “Edad” o “Embarque”.

Ahora devolvámonos un poco y en vez de eliminar las filas ahora eliminemos las columnas que tengan datos perdidos, para ello nuevamente utilizamos “dropna” pero ahora utilizamos axis igual a 1.

df.dropna(axis = 1)

Manipulando datos perdidos en Python

Con este procedimiento nos elimino tres columnas completas, la de edad, cabina y embarque.

Si nos podemos analizar un poco con los resultados obtenidos en los dos ejemplos, podemos determinar que eliminar filas o columnas para nuestro dataframe no es lo ideal ya que perdimos un buen número de datos que nos serán útil en el análisis, por lo que aplicar está opción para el manejo de datos perdidos no es la ideal.

En caso de que estes utilizando otro conjunto de datos y si te convenga eliminar las filas o columnas en donde haya datos perdidos debes ejecutar un paso más para que este procedimiento quede implementado en el dataframe, deberás agregar al final de la función el argumento “inplace” es igual “true”, esto permite que la modificación se realice en el conjunto de datos directamente. El comando quedaría algo como esto.

df.dropna(subset = ["Cabina"], axis = 0, inplace = True)

Para nuestro no lo vamos a implementar ya que no nos conviene eliminar datos.

Reemplazar datos perdidos

Ya vimos como eliminar los datos perdidos ahora veamos como reemplazarlos con valores reales, para ello la librería de Pandas tiene un método incorporado llamado “replace”, que se puede ser para completar los valores que faltan por los valores calculados, para usar este comando solamente tenemos que colocar los datos que queremos reemplazar y el nuevo valor.

Pero veamos esto en un ejemplo con nuestro dataframe del Titanic, digamos que queremos reemplazar los valores faltantes en la columna de edad por el valor promedio. Lo primero que debemos hacer calcular el promedio de esta columna para ello simplemente utilizamos el método “mean” o media y se lo aplicamos solamente a la columna de “Edad”.

df["Edad"].mean()

El resultado de este calculo es 29,69, como la edad es, por lo general, un número entero por lo que redondeamos a treinta por eso podemos definir la variable promedio igual a treinta.

promedio = 30

Ahora si podemos sustituir todos los valores faltantes de la columna “Edad” por 30, para ello simplemente utilizamos el comando “replace”, especificando la columna a modificar y seguidamente debemos colocar los datos a reemplazar, en este caso serán los NaN y posteriormente se indica el valor por el cual serán reemplazados que será el contenido en la variable promedio.

df["Edad"].replace(np.nan, promedio)

Manipulando datos perdidos en Python

Y listo con este comando se reemplaza todos los variables faltantes en Edad por el valor de treinta.

Quiero aclarar que esta es una forma bastante simplificada de reemplazar los valores perdidos, por supuesto en Python existen otras técnicas para la sustitución de valores, pero a mi parecer estas son las más fáciles.

Datos perdidos 3

3 thoughts on “Manipulando datos perdidos en Python”

  1. Hola Ligdieli…
    Gracias por tu trabajo !
    Tengo una consulta, sabes que al ejecutar esta linea :

    df[«Edad»].replace(np.nan, promedio)

    me dice que «np» y «nan» no están defindas.

    De antemano gracias por tu ayuda 🙂

  2. Hola Leandro,
    «np» es la forma convencional como se le denomina a los datos en la librería NumPy, esta la debiste haber definido al principio de tu programa como sigue: «import numpy as np». Al definir esto no deberás tener problemas porque «nan» significa «not a number» y es propio de cada librería.
    Si sigues con el problema me vuelves a escribir.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *