• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • Python
  • Pandas
  • NumPy
  • Matlab
  • Julia
  • JavaScript
  • Excel

Pandas: Aplicar una función a las filas o columnas de un DataFrame

junio 28, 2021 Por Daniel Rodríguez 2 comentarios
Tiempo de lectura: 5 minutos

pandas

En el caso de que necesitemos aplicar una misma función a las filas o columnas de un objeto DataFrame de Pandas contamos con el método apply(). Con el que es posible aplicar patrones de programación funcional a los conjuntos de datos. Esto hace que sea un método interesante de conocer y, cuando se comprende bien su funcionamiento, permite realizar operaciones complejas de forma eficiente. Por eso en esta entrada vamos a ver cómo aplicar una función a las filas o columnas de un DataFrame con apply().

El método apply() de los DataFrames

La biblioteca Pandas de Python proporciona un método para la clase Dataframe el cual aplica una función a lo largo un eje del Dataframe, esto es, a lo largo de cada fila o columna. Método que básicamente tiene la siguiente forma

df.apply(func, axis=0, args=())

en donde df indica un objeto DataFrame y los parámetros son

  • func: Función que se aplicará a cada columna o fila. La cual debe aceptar una serie y devuelve una serie.
  • axis: Eje a lo largo del cual se aplica la función en el conjunto de datos. Al seleccionarse el valor 0, valor que está por defecto, la función se aplica a las columnas, mientras que si se selecciona 1 se aplicará a las filas.
  • args: Argumentos adicionales para la función.

Uso básico de apply()

Antes de continuar es necesario crear un DataFrame para poder usar el método apply(). Para esto una buena opción puede ser emplear el generador de números aleatorios de NumPy. Por ejemplo, con el siguiente código se puede crear un DataFrame con tres filas y cuatro columnas.

import numpy as np
import pandas as pd

np.random.seed(0)

df = pd.DataFrame(np.random.randint(0, 100,
                                    size=(3, 4)),
                  columns=list('ABCD'))
    A   B   C   D
0  44  47  64  67
1  67   9  83  21
2  36  87  70  88

Ahora se puede aplicar el método apply() a este DataFrame, para lo que se puede usar una función lambda. Así, se puede sumar a cada uno de los elementos del conjunto de datos el valor 2.

Publicidad


df.apply(lambda x : x + 2)
    A   B   C   D
0  46  49  66  69
1  69  11  85  23
2  38  89  72  90

Lo que se puede hacer también mediante la definición de una función, para lo que se puede crear una función que sume 3 a cada uno de los elementos y aplicarla al conjunto de datos.

def add_3(x):
    return x + 3

df.apply(add_3)
    A   B   C   D
0  47  50  67  70
1  70  12  86  24
2  39  90  73  91

Una cosa interesante y de gran utilidad es la posibilidad de pasar a la función parámetros adicionales. Parámetros que se indican mediante la propiedad args del método, pudiéndose aplicar tanto a funciones normales como a lambda. Gracias a esto se puede crear una función genérica con la que se puede sumar cualquier valor al conjunto de datos simplemente pasando el valor como un parámetro adicional. Algo que se muestra en el siguiente ejemplo.

def add_data(x, y):
    return x + y

df.apply(add_data, args=[5])
    A   B   C   D
0  49  52  69  72
1  72  14  88  26
2  41  92  75  93

Aplicar una función a las fila o columna

Hasta ahora hemos empleado ejemplos de funciones que modifican los valores de todos los elementos de la serie por igual. Por lo que no es posible apreciar diferencias al cambiar el valor del parámetro axis. Pero, en el caso de aplicar una función que modifique cada uno de los elementos de la serie de forma diferente se podrá ver el efecto de modificar este parámetro. Un ejemplo básico es sumar un valor diferente a cada elemento de la serie.

def add_serie(x):
    return x + np.arange(len(x))

df.apply(add_serie)
    A   B   C   D
0  44  47  64  67
1  68  10  84  22
2  38  89  72  90

Ahora, al cambiar el valor de axis nos encontraremos con un resultado diferente.

df.apply(add_serie, axis=1)
    A   B   C   D
0  44  48  66  70
1  67  10  85  24
2  36  88  72  91

Observando que en el primer caso se ha aplicado las funciones por columnas, mientras que en el segundo por filas. Esto es, en el primer ejemplo se mantienen intactos los valores de la primera fila, mientras que a los de la segunda se le añade 1 y a los de la tercera dos. Mientras que en el segundo ejemplo se añade el mismo valor a cada una de las columnas.

Publicidad


Algo que se puede apreciar visualmente imprimiendo dentro de una función en valor de entrada.

def print_serie(x):
    print(x)
    return x

df.apply(print_serie)
0    44
1    67
2    36
Name: A, dtype: int64
0    44
1    67
2    36
Name: A, dtype: int64
0    47
1     9
2    87
Name: B, dtype: int64
0    64
1    83
2    70
Name: C, dtype: int64
0    67
1    21
2    88
Name: D, dtype: int64

Resumiendo datos con la función el método apply()

Con lo visto en el apartado anterior podemos ver que este método también se puede emplear para resumir el valor de los conjuntos de datos. Usando para ello funciones que devuelven un valor a partir de una serie, como puede ser la suma, la media, la desviación estándar, etc. Así es posible obtener el valor medio de los elementos de cada una de las columnas pasando como parámetro la función np.mean

df.apply(np.mean)
A    49.000000
B    47.666667
C    72.333333
D    58.666667

Nótese que el parámetro del método es la función, no una llamada a la misma (no se ha usado paréntesis). Esto es así porque el método apply() es el que tiene que llamar a la función.

Conclusiones

En esta ocasión se ha visto el funcionamiento del método apply() y como se puede emplear este para aplicar una función a las filas o columnas de un DataFrame. Creo que este es un método muy útil con el que se puede hacer de una forma rápida operaciones que de otra forma serían complejas. Gracias a que facilita emplear el paradigma de programación funcional, el cual es muy efectivo para el tratamiento de datos.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 4 / 5. Votos emitidos: 4

Publicidad


Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Mejorar el rendimiento de Pandas con swifter
    Mejorar el rendimiento de Pandas con swifter
  • pandas
    Pandas: Omitir filas de un archivo CSV
  • pandas
    Pandas: Cómo iterar sobre las filas de un DataFrame en…
  • Uso de Pandas Query para filtrar datos de forma sencilla
    Uso de Pandas Query para filtrar datos de forma sencilla
  • pandas
    Eliminar las filas con valores nulos en Pandas
  • Uso de Eval en Pandas para analizar datos de forma sencilla
    Uso de Eval en Pandas para analizar datos de forma sencilla

Publicado en: Python Etiquetado como: Pandas

Interacciones con los lectores

Comentarios

  1. Illya dice

    junio 8, 2022 a las 6:28 am

    Fantástico!!! Muchas gracias! Eres un genio!

    Responder
  2. JUAN CARLOS dice

    agosto 28, 2022 a las 11:12 pm

    excelente explicacion, gracias por el aporte

    Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Publicidad




Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Facebook
  • GitHub
  • Instagram
  • Pinterest
  • RSS
  • Twitter
  • Tumblr
  • YouTube

Publicidad

Entradas recientes

El método de Hare-Niemeyer y su implementación en Python

septiembre 29, 2023 Por Daniel Rodríguez

Redimensionar una partición de disco LVM con espacio no asignado en Linux

septiembre 27, 2023 Por Daniel Rodríguez

¿Cómo saber la versión de Pandas o cualquier otra librería en Python?

septiembre 25, 2023 Por Daniel Rodríguez

Publicidad

Es tendencia

  • ¿Cómo cambiar el nombre de las columnas en Pandas? publicado el mayo 6, 2019 | en Python
  • Seleccionar filas y columnas en Pandas con iloc y loc publicado el junio 21, 2019 | en Python
  • pandas Pandas: Cambiar los tipos de datos en los DataFrames publicado el julio 15, 2021 | en Python
  • Numpy básico: valores mínimos y máximos en arrays Numpy publicado el octubre 23, 2019 | en Python
  • Unir y combinar dataframes con pandas en Python publicado el septiembre 10, 2018 | en Python

Publicidad

Lo mejor valorado

4.9 (22)

Seleccionar filas y columnas en Pandas con iloc y loc

4.7 (12)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.6 (15)

Archivos JSON con Python: lectura y escritura

4.5 (10)

Diferencias entre var y let en JavaScript

4.3 (12)

Ordenación de diccionarios en Python mediante clave o valor

Publicidad

Comentarios recientes

  • Daniel Rodríguez en ¿Cómo eliminar columnas y filas en un dataframe pandas?
  • Miguel en ¿Cómo eliminar columnas y filas en un dataframe pandas?
  • alberto en Resolver problema de credenciales en Bitbucket
  • Pablo en Aplicar el método D’Hondt en Excel
  • Agapito en Creación de un EXE desde un archivo Python en Windows

Publicidad

Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2023 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto