La limpieza y preparaci贸n de datos es el primer paso m谩s cr铆tico en cualquier proyecto de Inteligencia Artificial y Machine Learning. Es normal que se dedique la mayor parte del tiempo, hasta un 70%, en la limpieza de los datos.

En esta publicaci贸n te guiar茅 a trav茅s de estos pasos iniciales de limpieza y preprocesamiento de datos en Python, comenzando por la importaci贸n de las librer铆as m谩s populares hasta la codificaci贸n real de las funciones.

Curso Te贸rico-Pr谩ctico: Machine Learning para no programadores

La limpieza de datos es el proceso de detectar y corregir o eliminar registros corruptos o inexactos de un conjunto de registros, tabla o base de datos y se refiere a la identificaci贸n de partes incompletas, incorrectas, inexactas o irrelevantes de los datos, para su posterior sustituci贸n, modificaci贸n o eliminaci贸n de los datos sucios o poco precisos.

Paso 1. Cargar el conjunto de datos

Importaci贸n de las librer铆as

aprende f谩cilmente inteligencia artificial - newsletter

Lo primero que debes hacer es importar las librer铆as para el preprocesamiento de datos. Hay muchas librer铆as disponibles, pero las m谩s populares e importantes para trabajar con datos son NumPy, Matplotlib y Pandas.

NumPy es la librer铆a usada para todas las cosas de matem谩ticas. Pandas es la mejor herramienta disponible para importar y gestionar conjuntos de datos. 聽Matplotlib es la librer铆a para hacer gr谩ficos.

Para implementar las librer铆as puedes utilizar un alias, esta es la forma com煤n de hacerlo. Para cumplir con este paso solamente tienes que escribir lo siguiente en tu c贸digo:

Limpieza de datos 1

Con este simple c贸digo dentro de tu programa ya puedes utilizar las librer铆as dentro de tu proyecto.

Curso Te贸rico-Pr谩ctico:Generaci麓贸n de Texto con Inteligencia Artificial

Cargar los datos en Pandas

Una vez que hayas descargado tu conjunto de datos y lo hayas nombrado como un archivo.csv, deber谩s cargarlo en un DataFrame de Pandas para explorarlo y realizar algunas tareas b谩sicas de limpieza, eliminando la informaci贸n que no necesitas y que har谩 que el procesamiento de datos sea m谩s lento.

Por lo general, estas tareas incluyen:

Eliminar la primera l铆nea, en ocasiones contiene texto extra帽o en lugar de los t铆tulos de las columnas. Este texto evita que el conjunto de datos sea analizado correctamente por la librer铆a de Pandas. Para eliminar esta informaci贸n puedes implementar este c贸digo:

Limpieza de datos 2

Eliminar columnas con explicaciones de texto que no necesitaremos, columnas de url y otras columnas innecesarias. El c贸digo para cumplir con esto es el siguiente:

Limpieza de datos 3

En donde se encuentra 鈥渦rl鈥 puedes colocar entre comillas la columna que quieres eliminar.

Eliminar todas las columnas con un solo valor, o con m谩s de un 50% de valores faltantes, esto lo hacemos para trabajar m谩s r谩pido. Toma en cuenta hacer esto, si el conjunto de datos es lo suficientemente grande como para que siga siendo significativo. El c贸digo que debes implementar es el siguiente:

Limpieza de datos 4

Tambi茅n es una buena pr谩ctica nombrar el conjunto de datos procesado, de forma diferente para mantenerlo separado de los datos sin procesar. Esto asegura que todav铆a tienes los datos originales en caso de que necesites volver a ellos.

Paso 2. Exploraci贸n del conjunto de datos

Compresi贸n de los datos

Ahora ya tienes los datos con los que vas a trabajar, aunque se ha hecho varias modificaciones b谩sicas, a煤n as铆 deber铆as dedicar algo de tiempo a explorarlos y comprender qu茅 funci贸n representa cada columna. Esta revisi贸n manual del conjunto de datos es importante para evitar errores en el an谩lisis de los datos y en el proceso de modelado.

Para facilitar el proceso, puedes crear un DataFrame con los nombres de las columnas, los tipos de datos, los valores de la primera fila y la descripci贸n del diccionario de datos. A medida que exploras las caracter铆sticas, puedes prestar atenci贸n a cualquier columna que:

  • este mal formateada,
  • requiere m谩s datos o mucho preprocesamiento para convertirse en una caracter铆stica 煤til, o
  • contiene informaci贸n redundante,

ya que estas cosas pueden da帽ar el an谩lisis si se manejan incorrectamente.

Tambi茅n debes prestar atenci贸n a la fuga de datos, que puede hacer que el modelo se ajuste demasiado. Esto se debe a que el modelo tambi茅n aprender谩 de caracter铆sticas que estar谩n disponibles cuando las utilizaremos para hacer predicciones. Necesitamos asegurarnos de que nuestro modelo est茅 capacitado utilizando solo los datos que tendr铆a en el momento en el que realicemos una predicci贸n.

Decidir sobre una columna objetivo

Con un conjunto de datos procesados y explorados, es necesario crear una matriz de variables independientes y un vector de variables dependientes. En primer lugar, debes decidir qu茅 columna utilizar como columna de destino para el modelado en funci贸n de la pregunta que deseas responder.

Por ejemplo, si quieres predecir el desarrollo del c谩ncer, o la posibilidad de que el cr茅dito sea aprobado, necesitas encontrar una columna con el estado de la enfermedad o si聽 pr茅stamo se concede o no, estas ser谩n las columnas destinos para cada problema.

Por ejemplo, si la columna de destino es la 煤ltima, puedes crear la matriz de variables independientes escribiendo el siguiente c贸digo:

Limpieza de datos 5

Los primeros dos puntos significan que queremos tomar todas las filas de nuestro conjunto de dat, mientras que :-1 significa que queremos tomar todas las columnas de datos excepto la 煤ltima. El m茅todo .values al final significa que queremos todos los valores.

Para tener el vector de variables dependientes con solo los datos de la 煤ltima columna, puedes escribir:

Limpieza de datos 6

Paso 3. Preparaci贸n de las caracter铆sticas para Machine Learning

Finalmente, es hora de hacer el trabajo preparatorio para limpiar las caracter铆sticas de los algoritmos de Machine Learning. Para limpiar el conjunto de datos, es necesario manejar los valores que faltan y las caracter铆sticas categ贸ricas, porque la matem谩tica subyacente en la mayor铆a de los modelos de Machine Learning asume que los datos son num茅ricos y no contienes valores que faltan. Adem谩s, la librer铆a Scikit Learn devuelve un error si se intenta entrenar un modelo como la Regresi贸n Lineal y la Regresi贸n Log铆stica utilizando datos que contienen valores perdidos o no num茅ricos.

Manejar valores faltantes

La falta de datos es quiz谩s el rasgo m谩s com煤n de los datos impuros. Estos valores suelen tomar la forma de NaN o None.

Hay varias causas de que falten valores, a veces faltan valores porque no existen, o porque la recopilaci贸n de datos es inadecuada o porque la entrada de datos es deficiente. Por ejemplo, si alguien es menor de edad, y la pregunta se aplica a personas mayores de 18 a帽o, entonces la pregunta tendr谩 un valor que falta. En tales casos, ser铆a un error rellenar un valor para esa pregunta.

Hay varias maneras de rellenar los valores que faltan:

  • Puedes eliminar las l铆neas con los datos si el conjunto de datos es lo suficientemente grande y el porcentaje de valores perdidos es alto, m谩s del 50%, por ejemplo.
  • Puedes rellenar todas las variables nulas con 0, si se trata de valor num茅ricos.
  • Puedes rellenar los valores perdidos con la media, media o el valor m谩s frecuente de la columna.
  • Tambi茅n puedes decidir rellenar los valores que faltan con cualquier valor que venga directamente despu茅s en la misma columna.

Estas decisiones dependen del tipo de datos, de lo que se quiera hacer con ellos y de la causa de la falta de valores. En realidad, el hecho de que algo sea popular no significa necesariamente que sea la elecci贸n correcta. La estrategia m谩s com煤n es utilizar el valor medio, pero dependiendo de los datos, se puede llegar a un enfoque totalmente diferente.

Manejo de datos categ贸ricos

Machine Learning solo utiliza valores num茅ricos, tipo de datos flotantes o enteros. Sin embargo, los conjuntos de datos a menudo contienen el objeto como tipo de datos, por lo tanto se hace necesario transformarlo en num茅rico. En la mayor铆a de los casos, los valores categ贸ricos son discretos y puedes ser codificados como variables ficticias, asignando un n煤mero para cada categor铆a. La forma m谩s sencilla es usar One Hot Encoder, especificando el 铆ndice de la columna en la que quieres trabajar. El c贸digo ser铆a como sigue:

Limpieza de datos 7

Tratamiento de fechas y horas

Un tipo espec铆fico de inconsistencia de datos es el formato de fechas, dd/mm/aa y mm/dd/aa en las mismas columnas. Es posible que sus valores de fecha no est茅n en el tipo de datos correcto, y esto no te permitir谩 realizar manipulaciones de manera efectiva y obtener informaci贸n de las mismas. Esta vez puedes utilizar el paquete datetime para fija el tipo de fecha.

Escala y normalizaci贸n

La escala es importante si necesitas especificar que una modificaci贸n en una cantidad no es igual a otra modificaci贸n en otra. Con la ayuda del escalado, te aseguras de que aunque algunas caracter铆sticas son grandes no se usar谩n como predictor principal. Por ejemplo, si se utiliza la edad y el salario de una persona en la predicci贸n, algunos algoritmos prestar谩n m谩s atenci贸n al salario porque es m谩s grande, lo que no tiene ning煤n sentido.

La normalizaci贸n implica transformar o convertir el conjunto de datos en una distribuci贸n normal. Algunos algoritmos como M谩quinas Vectores de Soporte convergen mucho m谩s r谩pido en los datos normalizados, por lo que tiene sentido normalizar los datos para obtener mejores resultados.

Hay muchas maneras de realizar el escalado de caracter铆sticas. En pocas palabras, ponemos todas nuestras caracter铆sticas en la misma escala para que ninguna est茅 dominada por otra. Por ejemplo, puedes utilizar la clase StandardScaler del paquete sklearn.preprocessing para ajustar y transformar el conjunto de datos:

Limpieza de datos 8

No es necesario utilizar fit a los datos de prueba solamente necesitas aplicar la transformaci贸n.

Guardar en CSV

Para estar Seguro de que todav铆a tienes los datos en bruto, es una buena pr谩ctica almacenar la salida final de cada secci贸n o etapa del flujo de trabajo en un archive csv separado. De esta manera, podr谩s realizar cambios en el flujo de procesamiento de datos sin tener que volver a calcularlo todo.

Como hicimos anteriormente, puedes almacenar el DataFrame como un .csv usando las funci贸n de Pandas to_csv(), como se muestra a continuaci贸n:

Limpieza de datos 9

Estos son solo los pasos b谩sicos necesarios para trabajar con un gran conjunto de datos, limpiando y preparando los datos para cualquier proyectos de Machine Learning. Existen otras formas de limpieza de datos que te pueden resultar 煤tiles. Pero con esto quiero que entiendas que es importante organizar y ordenar adecuadamente los datos antes de la formulaci贸n de cualquier modelo de Machine Learning. Unos datos mejores y m谩s limpios superan a los mejores algoritmos. Si utilizas un algoritmo muy simple junto con datos limpios los resultados son impresionantes.

Con esto finalizamos la explicaci贸n. Ya una base para realizar la limpieza y preprocesamiento de los datos, por lo tanto te dejo la siguiente pregunta, 驴Cu谩les de las siguientes afirmaciones crees t煤 que sea cierta?

Opci贸n 1: La limpieza y preprocesamiento de los datos se realiza despu茅s que ya se tenga el modelo de Machine Learning construido

Respuesta Incorrecta. La limpieza y preprocesamiento de los datos es el primer paso en cualquier proyecto de Machine Learning

Opci贸n 2: Los algoritmos de Machine Learning aceptan cualquier tipo de datos, desde n煤mero hasta del tipo objeto.

Respuesta Incorrecta. Los algoritmos de Machine Learning solamente aceptan datos num茅ricos, del tipo entero y flotante.

Opci贸n 3: En caso de que se tengan datos perdidos se puede rellenar esta informaci贸n con la media de los datos

Respuesta Correcta.

1 comentario en “Limpieza y preprocesamiento de datos para principiantes con c贸digo en Python”

  1. Descubre la limpieza de datos, la seleccion de caracteristicas, la transformacion de datos, la reduccion de la dimensionalidad y mucho mas en mi nuevo libro, con 30 tutoriales paso a paso y el codigo fuente completo en Python. La preparacion de datos es un tema importante para todos los tipos de datos, aunque para cada uno de ellos se requieren metodos especializados, como los datos de imagenes en la vision por computadora, los datos de texto en el procesamiento del lenguaje natural y los datos de secuencia en el pronostico de series temporales.

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada.