Introducción
La función Transformar en Pandas (Python) puede ser un poco difícil de entender, especialmente si viene de un Sobresalir antecedentes. Honestamente, la mayoría de los científicos de datos no lo usan de inmediato en su viaje de aprendizaje.
¡Pero la función de transformación de Pandas es en realidad una herramienta bastante útil como científico de datos! Es una función poderosa en la que puede apoyarse para la ingeniería de funciones en Pitón.
Personalmente, comencé a usar esto cuando buscaba realizar ingeniería de funciones en un hackathon, y me sorprendió gratamente lo rápido que funcionaba la función Transform. Creo firmemente que se beneficiará de conocer y usar la función Transformar y, por lo tanto, decidí escribir sobre ella en este artículo.
Para aprender los conceptos básicos de Python y Pandas para la ciencia de datos, consulte estos cursos populares:
Tabla de contenido
- ¿Qué es la función de transformación en Python?
- ¿Por qué es importante la función de transformación?
- Aplicar frente a función de transformación en Python
1. ¿Qué es la función de transformación en Python?
La función Transform de Python devuelve un marco de datos autoproducido con valores transformados después de aplicar la función especificada en su parámetro. Este marco de datos tiene la misma longitud que el marco de datos pasado.
Eso fue mucho para asimilar, así que permítanme desglosarlo con un ejemplo.
Digamos que queremos multiplicar 10 por cada elemento en un marco de datos:
El marco de datos original se ve así:
Este es el marco de datos que obtenemos después de aplicar la función Transformar de Python:
2. ¿Por qué es importante la función de transformación de Python?
La transformación resulta útil durante la extracción de características. Como sugiere el nombre, extraemos nuevas funciones de las existentes. Entendamos la importancia de la función de transformación con la ayuda de un ejemplo.
Aquí, tenemos un conjunto de datos sobre una tienda departamental:
Podemos ver que cada usuario ha comprado varios productos con diferentes cantidades de compra. Nos gustaría saber cuál es el importe medio de compra de cada usuario. Esto nos ayuda a crear una nueva característica para que el modelo comprenda mejor la relación.
Esta es la salida deseada:
Hay varios enfoques para hacer esto:
- Usando Groupby seguido de merge ()
- Enfoque de función de transformación
Implementaré ambos en este artículo.
Método 1: uso de Groupby seguido de merge ():
El primer enfoque es utilizar agrupar por para agregar los datos, luego fusionar estos datos nuevamente en el marco de datos original usando la función merge (). ¡Vamos a hacerlo!
Paso 1: importar las bibliotecas y leer el conjunto de datos
Paso 2: use groupby para calcular el agregado
Aquí hay una representación pictórica de cómo agrupar por reúne la media de cada usuario:
Paso 3: uso de la función merge () para recombinar
Ahora la parte difícil. ¿Cómo combinamos estos datos con el marco de datos original? Usaremos la función merge () para esta tarea. Puede leer más sobre uniones y fusiones en Python usando Pandas aquí y aquí, respectivamente.
Nuestro marco de datos original se ve así:
Esto ciertamente hace nuestro trabajo. Pero es un proceso de varios pasos y requiere código adicional para obtener los datos en la forma que necesitamos. Este proceso de varios pasos puede consumir recursos en hackatones donde el tiempo es una limitación importante.
Podemos resolver esto de manera efectiva usando la función de transformación en Pandas.
Enfoque 2: uso de la función de transformación de Python
Esta es una función importante para crear funciones. Créame, ¡puede cambiar las reglas del juego!
La función de transformación retiene el mismo número de elementos que el conjunto de datos original después de realizar la transformación. Nos apoyaremos en un paso de una línea súper fácil usando groupby seguido de una transformación:
La representación pictórica es la siguiente:
No podría ser más sencillo, ¿verdad? El marco de datos original se ve similar al anterior en el último paso.
El tiempo que tarda la función de transformación en realizar la operación anterior es comparativamente menor en un marco de datos grande. Esa es una ventaja significativa en comparación con el primer enfoque que usamos.
Permítanme demostrar la función Transformar usando Pandas en Python.
Supongamos que creamos un conjunto de datos aleatorio de 1,000,000 de filas y 3 columnas. Ahora calculamos la media de una columna basada en groupby (similar a la media de todas las compras basadas en groupby user_id).
Paso 1: importar las bibliotecas
Paso 2: crea el marco de datos
Paso 3: utilice el procedimiento de combinación
Paso 4: usa la función de transformación
Esto muestra claramente que la función de transformación es mucho más rápida que el enfoque anterior. ¡Bien hecho!
3. Diferencia entre la función Aplicar y Transformar en Python
Ahora, digamos que queremos crear una nueva columna basada en los valores de otra columna. Este es el marco de datos con el que estamos trabajando:
Con la función de aplicar:
Así es como se ve la salida usando la función Aplicar:
La función de aplicación envía una copia completa del marco de datos para trabajar para que podamos manipular todas las filas o columnas simultáneamente.
Con la función Transformar:
Esta característica no es posible en la función Transformar. Esto solo manipula una sola fila o columna en función del valor del eje y no manipula un marco de datos completo. Por lo tanto, podemos usar la función Aplicar o Transformar según el requisito.
Notas finales
La función Transformar es muy útil cuando busco rápidamente manipular filas o columnas. Como mencioné anteriormente, esto es especialmente útil en los hackatones cuando el tiempo es esencial.
Si te encuentras con más funciones de Pandas, ¡comenta y estaré feliz de aprender y compartir!
Empiece a participar en concursos para mostrar sus habilidades. Este es un gran punto de partida: Proyecto de ventas de Black Friday.
Puede registrarse en el Plataforma DataHack ¡y participe en competiciones geniales y compita con los mejores expertos en ciencia de datos!