Identificar datos Missing con Python

Identificar datos Missing con Python

Identificar datos missing (datos faltantes) en conjuntos de datos a partir de los cuales queremos inferir conocimiento es algo muy importante.

Si falta un dato en una variable y aplicamos un modelo al conjunto de datos, ese modelo no va a dar el mismo resultado que si el dato no fuera faltante.

Por tanto, identificar datos missing va a ser clave.

También será clave decidir a posteriori qué hacer con esos valores missing.

Veamos cómo identificar Missing values con Python. Código en verde:

  • Las Librerías que vamos a necesitar son pandas (pd) y numpy (np)
    • import pandas as pd
    • import numpy as np
  • Para leer datos
    • El comando a usar es pd.read_csv
      • Nombre_data = pd.read_csv(“lugar_donde_esta_el_fichero_y_nombre.csv”)
  • Listar “m” filas de datos (para ver si tenemos valores missing – NaN o None)
    • Comando sample:
      • Nombre_data.sample(m)
  • Cómo contar los valores missing en cada columna
    • Primero creamos la variable que los cuenta con isnull().sum()
      • missing_values_count = Nombre_data.isnull().sum()
    • Segundo vemos esa variable para las primeras 10 columnas:
      • missing_values_count[0:10]
  • ¿Qué % de valores missing hay sobre el total de valores?
    • Contamos el total de datos (celdas):
      • total_cells = np.product(Nombre_data.shape)
    • Contamos el total de valores missing, sumando todos los valores de la variable que contiene los missing para cada columna:
      • total_missing = missing_values_count.sum()
    • El %:
      • total_missing/total_cells*100

Lo importante una vez hemos detectado la existencia de datos missing es determinar qué hacer con ellos. Para eso es muy importante la intuición. Conocer bien de qué estamos hablando, qué es cada dato y si deberíamos dejarlo como missing o no.

Por ejemplo, si hablamos de una variable como “Número de hijos”, podría darse el caso de haber recogido la variable con número de hijos “igual a 1 o superior”, y tener como dato missing aquellos casos de no haber hijos (al ser 1 o superior, no está el valor 0). En este caso, la mejor manera de tratar los valores missing sería llevándolos todos a valor 0.

Pero hay otros casos en los que los valores missing pueden ser errores y por lo tanto debemos subsanar dicho error.

La librería pandas, de Python, tiene una función que elimina todas las filas en las que hay algún valor missing:

  • Nombre_data.dropna()

O también podemos eliminar las variables (columnas) que contengan al menos un dato missing (menos agresivo que lo anterior de coger las filas porque al coger una fila cojo todas las variables para dicha fila):

  • Selecciono las columnas con algún valor missing:
    • Columns_with_na_dropped = Nombre_data.dropna(axis=1)
  • Saco la cabecera para ver las columnas que han quedado:
    • Columns_with_na_dropped.head()

Para imprimir el número original de columnas que había y el número de columnas que ha quedado:

  • print(“Columnas en el conjunto de datos original: %d \n” % nfl_data.shape[1])
  • print(“Columnas finales: %d” % columns_with_na_dropped.shape[1])

Si en lugar de eliminar datos o columnas, queremos sustituir los datos missing por otro valor, por ejemplo “0”:

  • subset_nfl_data.fillna(0)

O también por el siguiente valor que viene en la misma columna detrás del valor missing y los que sigan missing, por “0”:

  • subset_nfl_data.fillna(method = ‘bfill’, axis=0).fillna(0)

Si os gusta este tipo de contenido, podéis encontrar mucho más en este curso de 5 días en Kaggle ¡Es súper fácil!

Y para ver más programación en Python este blog:

Dejar un comentario

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