Guía rápida para limpiar datos en Python con Pandas

Los datos te dan la pauta para tomar buenas decisiones

Maria Guzman Perez
Nowports Tech and Product
6 min readMay 23, 2022

--

Limpiar datos en Phyton con Pandas

Uno de los problemas que frecuentemente se presentan cuando empezamos a explorar y analizar bases de datos es que estos no estén “limpios”. Y para que comprendas a qué me refiero, te invito a seguir leyendo.👇

¿Cuándo no está limpia una base de datos?

El que los datos no estén limpios puede significar que:

  • Algunas columnas tienen espacios vacíos.
  • El formato de un valor es distinto al del resto de la columna.
  • Existen datos duplicados o que no estén dentro de los parámetros que consideres correctos.
  • Entre otros factores.

La realidad es que la definición de datos “limpios” depende del propósito del análisis que realices; probablemente no sea igual la limpieza que debas hacer para la creación de un análisis visual que para un modelo de machine learning, por ponerte un ejemplo.

En este sentido, si quieres obtener los mejores resultados en cualquier proyecto de análisis de datos, debes tener presente que incluso un pequeño conjunto de estos datos puede cambiar las conclusiones de todo tu trabajo. Por esto es fundamental que siempre los revises, y en caso necesario, los limpies.

Si bien la tarea de limpiar datos puede parecer sencilla cuando hablamos de un conjunto de datos pequeño, la situación cambia cuando trabajas con grandes volúmenes. Cuando los datos son demasiados, es difícil que identifiques cuáles limpiar a simple vista, pero la buena noticia es que existe una solución.

¿Cómo limpiar grandes volúmenes de datos?

La biblioteca Pandas de Python es una excelente herramienta para que detectes errores y los corrijas de una forma eficiente. Lo primero que debes hacer para aprovechar esta oportunidad es entender los datos y definir qué acciones tomar para limpiarlos.

Ahora te doy más detalles del proceso:

Entiende la base de datos

Pandas(pd) tiene varias funciones que te ayudan a darle un vistazo general a lo que encuentras en el conjunto de datos, en todas estas necesitas haber importado el conjunto de datos en formato de base de datos de Pandas y utilizar el nombre de la base (df) seguido de un punto y la función:

  • df.shape = muestra la cantidad de filas x cantidad de columnas.
  • df.info = muestra el tipo de variable para el índice y las columnas, cuántos valores nulos tiene cada columna y la memoria que se está utilizando.
  • df.head() = muestra las primeras 5 líneas de la base de datos, lo que te ayuda a revisar el formato de las columnas y el tipo de valores.
  • df.columns = muestra la lista de los nombres de las columnas, lo que es muy útil para identificar si necesitas modificarlos y estandarizarlos. Al hacerlo podrás mejorar la cooperación entre equipos y conseguirás que el código sea más fácil de compartir y entender.
  • df.dtypes = muestra las columnas con su tipo de variable. Con esta función y la de df.head() puedes saber si necesitas modificar el tipo de variable en alguna columna, por ejemplo: cuando el valor que ves en el resultado de la primera función es un número (‘float’) y cuando corres .dtypes observas que esta guardada como ‘object’.
  • df.loc[df.duplicated()] = esta combinación de .loc[], una función de filtro, y .duplicated(), muestra todas las filas donde se duplica la información.

Obtén estadísticas generales de las columnas

Ahora bien , para seguir comprendiendo tu conjunto de datos, el siguiente paso que debes dar es obtener estadísticas generales de las variables (columnas) y, si ya notaste que para lograrlo debes hacer cambios en los formatos o nombres de las columnas, puedes utilizar las siguientes funciones:

  • df.column.astype(‘type’), donde column es el nombre de la columna y ‘type’ el nuevo formato que quieras utilizar, por ejemplo ‘float’, una función que, aunque genera una serie de datos con el nuevo formato, no cambia la base de datos original; solo si quieres hacer el cambio debes escribir sobre la columna la siguiente línea de código: df.column = df.column.astype(‘type’).
  • En algunas ocasiones, con la función anterior, es posible que obtengas un error al intentar cambiar una columna numérica que contiene valores no numéricos, en ese caso puedes utilizar pd.to_numeric(df.column, errors = ‘coerce’). El parámetro errors le indica a la función convertir en ‘nan’ (Not a number) todos esos valores que antes resultaban en un error.
  • df.rename(columns = {column1:column1newname}) te permite renombrar las columnas que quieras usando un diccionario. También, modificar la función y dentro de la misma, utilizar una función lambda que te deje hacer más modificaciones, por ejemplo, cambiar todos los nombres a minúsculas: df.rename(columns = lambda x:x.lower()). Para que el cambio se refleje en la base original, incluye inplace=True.
  • df.columns = [‘column1’,’column2’] te permite cambiar los nombres de las columnas utilizando una lista de los nombres a emplear.

Por otro lado, con las columnas correctas puedes empezar a generar algunas estadísticas que te ayuden a comprender un poco mejor tu data. Para esto, Pandas cuenta con funciones de agregación o de resumen:

  • df.column.mean() = promedio de la columna
  • df.column.min() = valor mínimo de la columna
  • df.column.max() = valor máximo de la columna
  • df.column.mean() = desviación estándar

Aunque estas funciones te ayudan a conocer la información de cada columna, con la función df.describe() puedes obtener estadísticas descriptivas de todas las variables numéricas y de tipo objeto en la base de datos en formato tabla.

Limpia la data

Una vez que te familiarices con tu base de datos podrás definir si necesitas transformar, borrar o reemplazar algunos de esos datos, esto con el fin de asegurar que cumplan con los objetivos de tu proyecto. Para hacerlo, Pandas pone a tu disposición estas funciones:

  • Para transformar usa la función .transform que, combinada con una función lambda, modifica todos los valores de la columna.

✔ Con la función df.column.transform(lambda x: function) puedes normalizar la data, elevar los valores al cuadrado, dividirlos entre otro valor, etc.

  • Para eliminar algunos datos o columnas utiliza la función df.drop. Por defecto está destinada para filas, por lo que si quieres eliminar columnas debes utilizar el parámetro axis = 1 o el parametro columns = [‘column’], con el nombre de la columna o una lista de las columnas a borrar.
  • Si uno de tus problemas son los duplicados, entonces aplica la función df.drop_duplicates(). Si no colocas ningún parámetro se eliminarán todas las filas donde se dupliquen todos los valores, así que considera estos:

✔ El parámetro subset = [‘columns’] te permite seleccionar las columnas que se deban duplicar para eliminar una fila.

✔ Y el parámetro keep = ‘first’ mantiene la primera fila que se duplica, pero si colocas ‘last’, se queda con la última.

  • Si deseas eliminar valores nulos, utiliza df.dropna(). Si no le colocas parámetros se borrarán todas las filas donde haya un valor nulo(na), así que sigue estas recomendaciones:

✔ Para que solo se eliminen las filas donde todos los valores sean nulos, agrega a los paréntesis el parámetro how = ‘all’.

✔ Puedes definir un número necesario de valores nulos con el parámetro thresh = (número), o un subset = [‘columns’] con una lista de columnas donde deben existir los valores nulos para que la fila sea eliminada.

✔ Cuando no necesites eliminar valores nulos, sino reemplazarlos con algún valor, entonces utiliza la función df.fillna(). Esta también puede usarse con un diccionario para que especifiques cuáles valores nulos modificar, se logra con el parámetro value = {‘column’ : ‘value’}.

  • Si quieres reemplazar data “sucia” con valores nan, entonces usa numpy, otra biblioteca muy utilizada en Python para analizar datos. Debes importar ‘nan’ y usar df.replace() con un diccionario: df.replace({column: {value you want to replace : nan}}).

Finalmente, en caso de que desees cambiar la base de datos original, todas las funciones anteriores necesitan incluir el parámetro inplace = True.

Reduce sesgos en tu análisis con datos limpios

Todas las funciones de Pandas que te acabo de explicar te ayudarán a conocer y a limpiar la data con la que trabajes, así que úsalas a tu favor. Notarás que después de realizar la limpieza tendrás una base de datos que te permitirá llegar a conclusiones más precisas y tomar mejores decisiones de negocio.

¿Quieres leer más temas relacionados? 👉Visita el blog de Nowports Tech👈

--

--