Una Mejor Forma De Preprocesar Datos: Pandas Pipe

Soner Yıldırım
Aug 17, 2021


Los datos de la vida real suelen ser desordenados. Requieren mucho preprocesamiento para estar listos para su uso. Pandas es una de las librerías de análisis y manipulación de datos más utilizadas y ofrece varias funciones para preprocesar los datos en bruto.

En este artículo, nos centraremos en una función en particular que organiza múltiples operaciones de preprocesamiento en una sola: la función pipe.

Cuando se trata de herramientas y paquetes de software, aprendo mejor trabajando con ejemplos. Lo tengo en cuenta a la hora de crear contenidos. En este artículo haré lo mismo.

Empecemos por crear un marco de datos con datos simulados.


import numpy as np
import pandas as pd
df = pd.DataFrame({
   "id": [100, 100, 101, 102, 103, 104, 105, 106],
   "A": [1, 2, 3, 4, 5, 2, np.nan, 5],
   "B": [45, 56, 48, 47, 62, 112, 54, 49],
   "C": [1.2, 1.4, 1.1, 1.8, np.nan, 1.4, 1.6, 1.5]
})
df


(image by author)

Nuestro dataframe contiene algunos valores perdidos indicados por una representación estándar de valores perdidos (es decir, NaN). La columna id incluye valores duplicados. Por último, pero no menos importante, el 112 de la columna B parece un valor atípico.

Estos son algunos de los problemas típicos de los datos de la vida real. Vamos a crear una tubería que maneje los problemas que acabamos de describir.

Para cada tarea, necesitamos una función. Por lo tanto, el primer paso es crear las funciones que se colocarán en la tubería.

Lea También: Pandas vs SQL. ¿Cuándo Los Científicos de Datos Deben Usar Uno Sobre el Otro?

Es importante tener en cuenta que las funciones utilizadas en la tubería necesitan tomar un marco de datos como argumento y devolver un marco de datos.

La primera función se encarga de los valores perdidos.


def fill_missing_values(df):
   for col in df.select_dtypes(include= ["int","float"]).columns:
      val = df[col].mean()
      df[col].fillna(val, inplace=True)
   return df

Prefiero sustituir los valores que faltan en las columnas numéricas por el valor medio de la columna. Siéntase libre de personalizar esta función. Funcionará en la tubería siempre que tome un marco de datos como argumento y devuelva un marco de datos.

La segunda función nos ayudará a eliminar los valores duplicados.

def drop_duplicates(df, column_name):
   df = df.drop_duplicates(subset=column_name)
   return df

Me ha ayudado la función incorporada de Pandas de eliminar duplicados. Elimina los valores duplicados en la columna o columnas dadas. Además del marco de datos, esta función también toma un nombre de columna como argumento. Podemos pasar los argumentos adicionales a la tubería también.

La última función de la tubería se utilizará para eliminar los valores atípicos.

def remove_outliers(df, column_list):
   for col in column_list:
      avg = df[col].mean()
      std = df[col].std()
      low = avg - 2 * std
      high = avg + 2 * std
      df = df[df[col].between(low, high, inclusive=True)]
   return df

Lo que hace esta función es lo siguiente:
  1. Toma un marco de datos y una lista de columnas
  2. Para cada columna de la lista, calcula la media y la desviación estándar
  3. Calcula un límite inferior y superior utilizando la media y la desviación estándar
  4. Elimina los valores que están fuera del rango definido por el límite inferior y superior

Al igual que las funciones anteriores, puede elegir su propia forma de detectar los valores atípicos.

Lea también: Usando Python y Pandas Datareader Para Analizar Datos Financieros

Ahora tenemos 3 funciones que manejan una tarea de preprocesamiento de datos. El siguiente paso es crear una tubería con estas funciones.

df_processed = (df.
                pipe(fill_missing_values).
                pipe(drop_duplicates, "id").
                pipe(remove_outliers, ["A","B"]))

Esta tubería ejecuta las funciones en el orden dado. Podemos pasar los argumentos a la tubería junto con los nombres de las funciones.

Una cosa que hay que mencionar aquí es que algunas funciones de la tubería modifican el marco de datos original. Por lo tanto, si se utiliza la tubería como se ha indicado anteriormente, también se actualizará df.

Una opción para superar este problema es utilizar una copia del marco de datos original en la tubería. Si no le importa mantener el marco de datos original tal como está, puede simplemente utilizarlo en la tubería.

Actualizaré la tubería como se indica a continuación:

my_df = df.copy()
df_processed = (my_df.
                pipe(fill_missing_values).
                pipe(drop_duplicates, "id").
                pipe(remove_outliers, ["A","B"]))

Veamos los marcos de datos originales y procesados:


df (image by author)


df_processed (image by author)


Conclusion

Por supuesto, se pueden realizar las mismas tareas aplicando estas funciones por separado. Sin embargo, la función pipe ofrece una forma estructurada y organizada de combinar varias funciones en una sola operación.

Dependiendo de los datos brutos y de las tareas, el preprocesamiento puede incluir más pasos. Puede añadir tantos pasos como necesite en la función pipe. A medida que el número de pasos aumenta, la sintaxis se vuelve más limpia con la función pipe en comparación con la ejecución de funciones por separado.

Gracias por leer. Por favor, hágame saber si tiene algún comentario.

Lea también:
- Usando Pandas Profiling Para Acelerar Nuestra Exploración de Datos
- Lo Esencial De Pandas Para La Ciencia De Datos

“Una Mejor Forma De Preprocesar Datos: Pandas Pipe”
– Soner Yıldırım twitter social icon Tweet


Compartir este artículo:

0 Comentarios

Crear un comentario
Ingresar para Comentar

Artículos Relacionados

Oct 16, 2021

6 Conceptos de Estadística Avanzada en Data Science

El artículo contiene algunos de los conceptos estadísticos avanzados más utilizados junto con su implementación en Python.En mis artículos anterior...

Nagesh Singh Chauhan
Por Nagesh Singh Chauhan
Oct 09, 2021

Las 10 Mejores Extensiones de Python para Visual Studio Code

En este nuevo post queremos hablar de las extensiones más útiles de Python para Visual Studio Code. Visual Studio Code es un entorno de desarrollo ...

Daniel Morales
Por Daniel Morales
Sep 25, 2021

10 Preguntas Altamente Probables en Una Entrevista de Data Science

La popularidad de la ciencia de los datos atrae a muchas personas de una amplia gama de profesiones para hacer un cambio de carrera con el objetivo...

Soner Yıldırım
Por Soner Yıldırım
Icon

Únete a nuestra comunidad privada en Slack

Manténgase al día participando de ésta gran comunidad de data scientists en latinoamérica. Hablamos sobre competiciones en data science, cómo estamos resolviendo los retos, modelos de machine learning aplicados a las competiciones, técnicas novedosas y mucho más!

 
Te enviaremos el link de invitación a tu email de forma inmediata.
arrow-up icon