Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Programación orientada a datos con Python, Unidad 6 — Programación funcional aplicada a datos, 6.3 — Expresividad del código ·

Buenas prácticas

Buenas prácticas para programación funcional aplicada a datos

Introducción

La programación funcional es una forma de abordar los problemas mediante la composición y manipulación de funciones puras, lo que puede resultar en código más legible y mantenible. En el contexto de la programación orientada a datos con Python, aplicar la programación funcional puede optimizar significativamente los procesos de análisis y transformación de datos. Este artículo explorará las mejores prácticas para implementar programación funcional eficazmente en tus proyectos de ciencia de datos e inteligencia artificial.

Explicación principal con ejemplos

La programación funcional se centra en funciones que siempre devuelven el mismo resultado dado los mismos argumentos y no tienen efectos secundarios. En Python, esto se logra a través del uso de las funciones como valores, map(), filter(), reduce(), y comprensiones de listas.

Ejemplo: Transformación de datos con map()

# Ejemplo 1: Usar map para aplicar una función a cada elemento en una lista

def increment(x):
    return x + 1

numbers = [1, 2, 3, 4, 5]
increased_numbers = list(map(increment, numbers))
print(increased_numbers)  # Salida: [2, 3, 4, 5, 6]

Ejemplo: Filtrado de datos con filter()

# Ejemplo 2: Usar filter para seleccionar solo los números pares

def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # Salida: [2, 4]

Ejemplo: Agregación con reduce()

# Ejemplo 3: Usar reduce para calcular el producto de una lista

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # Salida: 120

Errores típicos / trampas

Trampa 1: Ignorar el estado mutable en funciones puras

Una de las principales reglas de la programación funcional es que una función pura no debe modificar su entrada. En Python, los diccionarios y listas son mutables, lo que puede llevar a confusiones si se usan inapropiadamente.

# Ejemplo incorrecto: Usar map para cambiar el valor de una lista en lugar de devolverlo

def increment(x):
    x += 1
    return x

numbers = [1, 2, 3, 4, 5]
increased_numbers = list(map(increment, numbers))
print(numbers)  # Salida: [2, 3, 4, 5, 6] (erróneo)

Trampa 2: Confusión entre map() y filter()

A menudo se usan map() y filter() indistintamente para aplicar funciones a listas. Sin embargo, estas son funciones diferentes con propósitos específicos.

# Ejemplo incorrecto: Usar filter como si fuera map

def increment(x):
    return x + 1

numbers = [1, 2, 3, 4, 5]
increased_numbers = list(filter(increment, numbers))
print(increased_numbers)  # Salida: [] (incorrecta)

Trampa 3: No usar reduce() en casos innecesarios

reduce() es útil para reducir una lista a un único valor. Sin embargo, en algunos casos, la implementación recursiva puede ser más legible y mantenible que el uso de reduce().

# Ejemplo incorrecto: Usar reduce en lugar de una simple suma acumulativa

from functools import reduce

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

numbers = [1, 2, 3, 4, 5]
total = reduce(sum_two, numbers)
print(total)  # Salida: 15

Checklist accionable

  1. Comprueba que tus funciones sean puras: Asegúrate de que cada función solo dependa de sus argumentos de entrada y no tenga efectos secundarios.
  2. Usa map() para aplicar una transformación a todos los elementos en una lista o iterador.
  3. Utiliza filter() para seleccionar elementos basados en ciertos criterios.
  4. Evita la mutabilidad innecesaria: Asegúrate de no modificar los argumentos de entrada directamente.
  5. Elije el método correcto según tu caso: map(), filter(), o una solución recursiva dependiendo del problema.
  6. Documenta claramente cada función y su propósito.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Aprende a usar NumPy: La biblioteca NumPy es fundamental para el procesamiento de datos científicos en Python, especialmente para arreglos multidimensionales.
  • Estudia Pandas: Familiarízate con las estructuras de datos y funciones de manipulación de datos en Pandas.
  • Empieza a estudiar Machine Learning: Comienza con los fundamentos del aprendizaje automático utilizando bibliotecas como Scikit-learn.

Siguiendo estas buenas prácticas, podrás escribir código funcional más claro y eficiente para tus proyectos de ciencia de datos e inteligencia artificial.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).