A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Buscar en lecciones


IngresarEmpezar
← Volver a Cómo hacerlo
Editar en Github

¿Cómo usar el método apply de Pandas?

Escrito por:

El método apply() es uno de los métodos más versátiles y útiles de la librería de Pandas (Si te interesa aprender Pandas desde cero, te dejamos este tutorial de pandas para machine), este método te permite pasar una función y aplicarla en una columna específica dentro de un Dataframe o una Serie. En el siguiente ejemplo, veremos cómo utilizar esta función para realizar un cambio dentro de una columna en un Dataframe de usuarios.

1import pandas as pd 2 3users_df = pd.DataFrame({ 4 "Nombre": ["JOHN", "MARY", "PETER", "JANE"], 5 "Apellido": ["smith", "johnson", "davis", "brown"], 6 "Edad": [25, 30, 35, 40], 7 "Email": ["john@gmail.com", "mary@hotmail.com", "peter@yahoo.com", "jane@example.com"] 8}) 9 10def capitalize(nombre): 11 name_capitalized = nombre.lower().capitalize() 12 return name_capitalized 13 14users_df["Nombre"] = users_df["Nombre"].apply(capitalize) 15users_df["Apellido"] = users_df["Apellido"].apply(lambda apellido: apellido.capitalize()) 16 17print(users_df)

output del código:

1 Nombre Apellido Edad Email 20 John Smith 25 john@gmail.com 31 Mary Johnson 30 mary@hotmail.com 42 Peter Davis 35 peter@yahoo.com 53 Jane Brown 40 jane@example.com

En este ejemplo, hacemos uso de el método apply() para modificar las columnas Nombre y Apellido y hacer que solo la primera letra sea mayúscula, este método puede recibir una función o una lambda (función anónima) cómo parámetro, en este ejemplo de código usamos una función para modificar los nombres de los usuarios y una función lambda para modificar los apellidos, la elección de cual función debes usar depende de tus preferencias y la cantidad de cambios que deseas hacer en la columna ya que una función lambda se declara en una sola línea de código y puede ser confuso hacer demasiados cambios e una función de este tipo.

¿Qué es el método apply() y cómo funciona?

El método apply() de Pandas es un método de propósito general que se puede utilizar para aplicar una función a cada elemento de una serie o cada fila o columna de un marco de datos (DataFrame). En el caso de la series, el método apply() recibe una función cómo parámetro y la aplica a cada elemento de la serie, la función puede ser una función personalizada o una función de NumPy o Pandas.

En el caso de los DataFrame, el método apply() recibe una función cómo parámetro y la aplica a cada fila o columna del marco de datos, según el valor del parámetro axis que por defecto se aplica a las filas. Este método es una herramienta muy versátil que puede utilizarse para realizar una gran variedad de tareas de procesamiento de datos tanto en la ciencia de datos (data science) como en el aprendizaje automático (machine learning).

Parámetros del método apply() de Pandas

El método apply() recibe varios parámetros, a continuación veremos cuales son y cómo funcionan.

1data_frame["columna"].apply( 2 funcion_modificadora, 3 axis = 0, 4 raw = False, 5 result_type = None, 6 args = ("parámetros", "extra"), 7 by_row = "compat", 8 **kwargs 9)
  • funcion_modificadora: función que se aplica a cada una de las columnas o filas en la Serie o DataFrame.
  • axis: Eje a lo largo del cual se aplica la función, esta variable recibe dos valores (0 o 'index', 1 o 'columns') y por defecto tiene el valor de 0.
    • 0 o 'index': aplica la función a cada columna.
    • 1 o 'columns': aplica la función a cada fila.
  • raw: este parámetro controla cómo se deben pasar los elementos de la Serie o DataFrame, está parámetro recibe un valor booleano que por defecto es False.
    • True: pasa los elementos cómo objetos de Python a la función.
    • False: pasa los elementos cómo arrays de NumPy a la función.
  • result_type: este parámetro solo actúa cuando axis=1 (columns) y puede recibir cuatro valores (‘expand’, ‘reduce’, ‘broadcast’, None) por defecto su valor es None.
    • ‘expand’: los resultados en forma de lista se convertirán en columnas.
    • ‘reduce’: devuelve una Serie si es posible en lugar de expandir los resultados en forma de lista. Este valor es lo contrario de 'expand'.
    • ‘broadcast’: los resultados se emitirán con la forma original del DataFrame, se conservarán los índices y las columnas originales.
  • args: argumentos posicionales de tipo tuple para pasar a la función además de la Serie o DataFrame.
  • by_row: este parámetro determina si la función se aplica a cada fila o columna del marco de datos como un objeto Series o cómo un objeto ndarray.
  • ** kwargs: argumentos para pasar cómo argumentos de palabra clave a la función. Estos se utilizan cuando la función necesita argumentos adicionales además de los valores de la Serie o DataFrame.

Ejemplos de uso del método apply() de Pandas

El método apply() de Pandas tiene bastantes usos para el procesamiento de datos tanto en data science cómo en machine learning, a continuación veremos algunos ejemplos básicos haciendo uso de este método.

Combinar dos filas de un Dataframe en una sola

Uno de los usos más comunes para el método apply() es el de acceder a las filas de un DataFrame y combinarlas o modificarlas, cómo se muestra en el siguiente ejemplo.

1import pandas as pd 2 3users_df = pd.DataFrame({ 4 "Nombre": ["John", "Mary", "Peter", "Jane"], 5 "Apellido": ["Smith", "Johnson", "Davis", "Brown"], 6 "Edad": [25, 30, 35, 40], 7 "Email": ["john@gmail.com", "mary@hotmail.com", "peter@yahoo.com", "jane@example.com"] 8}) 9 10def crear_nombre_completo(fila): 11 return fila["Nombre"] + " " + fila["Apellido"] 12 13users_df["Nombre Completo"] = users_df.apply(crear_nombre_completo, axis=1) 14print(users_df)

output:

1 Nombre Apellido Edad Email Nombre Completo 20 John Smith 25 john@gmail.com John Smith 31 Mary Johnson 30 mary@hotmail.com Mary Johnson 42 Peter Davis 35 peter@yahoo.com Peter Davis 53 Jane Brown 40 jane@example.com Jane Brown

En este ejemplo, hacemos uso del método apply() para acceder las filas Nombre y Apellido y combinarlas en una sola que llamaremos Nombre Completo, para este ejemplo debemos pasar el parámetro axis=1 de esta forma le decimos a la función que debe fijarse en las filas del DataFrame y no en las columnas, luego creamos una nueva columna para guardar el resultado del método apply(), para crear la nueva columna usamos la sintaxis users_df["Nombre Completo"].

Modificar una columna en un Dataframe

Otro uso bastante común del método apply() es arreglar o modificar una columna en un DataFrame, cómo se muestra en el siguiente ejemplo.

1import pandas as pd 2import re 3 4users_df = pd.DataFrame({ 5 "Nombre": ["John", "mary", "PETER", "JAne"], 6 "Apellido": ["Smith", "Johnson", "Davis", "Brown"], 7 "Edad": [25, 30, 35, 40], 8 "Telefono": ["123-456-7890", "0987654321", "123 098 4567", "147_258_3690"] 9}) 10 11def modificar_numero(numero): 12 num = re.sub(r'[^0-9]', '', numero) 13 return f"{num[0:3]}-{num[3:6]}-{num[6:]}" 14 15def modificar_nombre(nombre): 16 return nombre.lower().capitalize() 17 18users_df["Nombre"] = users_df["Nombre"].apply(modificar_nombre) 19users_df["Telefono"] = users_df["Telefono"].apply(modificar_numero) 20 21print(users_df)

output:

1 Nombre Apellido Edad Telefono 20 John Smith 25 123-456-7890 31 Mary Johnson 30 098-765-4321 42 Peter Davis 35 123-098-4567 53 Jane Brown 40 147-258-3690

En este ejemplo hacemos uso del método apply() para modificar dos columnas en el Dataframe users_df, la columna Nombre y la columna Telefono, cómo puedes ver en el ejemplo la columna Nombre tiene varias inconsistencias de ortografía, para arreglar esto pasamos todos los nombres a minúscula y luego pasamos la primera letra de cada nombre a mayúscula así tendremos una estructura más concisa para el nombre de los usuarios. Por otro lado la columna Telefono no sigue un único patrón específico sino que cada número tiene su propia sintaxis, para solucionar esto, hacemos uso de una expresión regular para eliminar cualquier carácter del número telefónico que no sea un número y luego le asignamos una única sintaxis a todos los números telefónicos.

Modificar los valores de una Serie

El método apply() también es bastante útil para modificar los datos de una Serie de Pandas, a continuación veremos un pequeño ejemplo.

1import pandas as pd 2numeros_serie = pd.Series([1, 2, 3, 4, 5]) 3 4def elevar_al_cuadrado(num): 5 return num ** 2 6 7def factorial(num): 8 if num == 0: 9 return 1 10 else: 11 return num * factorial(num - 1) 12 13cuadrados = numeros_serie.apply(elevar_al_cuadrado) 14factoriales = numeros_serie.apply(factorial) 15 16print(cuadrados) 17print(factoriales)

output:

10 1 --> Cuadrado del número 1 21 4 --> Cuadrado del número 2 32 9 --> Cuadrado del número 3 43 16 --> Cuadrado del número 4 54 25 --> Cuadrado del número 5 6dtype: int64 7 80 1 --> Factorial del número 1 91 2 --> Factorial del número 2 102 6 --> Factorial del número 3 113 24 --> Factorial del número 4 124 120 --> Factorial del número 5 13dtype: int64

En este ejemplo, aplicamos el método apply() a cada uno de los elementos de la Serie numeros_serie, primero le pasamos la función elevar_al_cuadrado() para encontrar el número cuadrado de todos los elementos, luego también le pasamos la función factorial() para encontrar el número factorial de cada uno de los elementos de la Serie y por último imprimimos el resultado en la consola. Este es solo un pequeño ejemplo, el método apply() puede usarse de muchas otras maneras para trabajar con datos en Series o Dataframes.

Conclusión

El método apply() de Pandas es esencial en el análisis y la manipulación de datos, ya que permite aplicar funciones personalizadas a cada uno de los elementos de una Serie o Dataframe. En este artículo vimos algunos ejemplos sobre cómo hacer uso de este método para manipular los elementos de estas estructuras y modificarlos, recuerda que estos son solo algunos ejemplos básicos, puedes hacer muchas cosas más con ayuda de este método. Te invito a que sigas aprendiendo y practicando con el método apply() ya que te ayudará bastante en tu carrera cómo desarrollador Python.

Esperamos que hayas disfrutado de este artículo y que encuentres la información útil. Te invitamos a explorar otros recursos en nuestro blog para ampliar tus habilidades con Pandas y el análisis de datos. Si deseas llevar tu aprendizaje al siguiente nivel, te animamos a registrarte de forma totalmente gratuita en 4Geeks.com.

¡Diviértete aprendiendo! 😉