Programa
En las aplicaciones actuales, los usuarios quieren una respuesta inmediata, especialmente cuando las tareas tardan mucho en completarse. Las barras de progreso de Python son una forma clara y sencilla de mostrar que algo está ocurriendo en segundo plano. Una barra de progreso sólida ayuda a que un programa parezca más rápido, añade un toque profesional y mejora la facilidad de uso.
En este artículo, aprenderás a implementar barras de progreso en Python utilizando bibliotecas populares como tqdm, progress, progressbar2, alive-progress, y Tkinter, junto con las mejores prácticas para mejorar la experiencia del usuario y el rendimiento de la aplicación.
Para aprender más sobre los conceptos de Python de forma práctica, consulta nuestro curso Curso de Fundamentos de Programación en Python.
¿Qué son las barras de progreso en Python?
Las barras de progreso son omnipresentes. Suelen utilizarse para descargas de archivos, instalaciones de software y canalizaciones ETL. También son útiles para seguir el progreso del entrenamiento de modelos de machine learning.
La barra de progreso muestra cuánto de una tarea se ha completado y cuánto queda. Puede aparecer como texto en una interfaz de línea de comandos (CLI) o como una barra visual en una interfaz gráfica de usuario (GUI).
Las barras de progreso mejoran la experiencia del usuario. Proporcionan actualizaciones en tiempo real, mostrando a los usuarios su progreso en el proceso. Si se produce un retraso, los usuarios pueden decidir si intervienen o esperan. Esta visibilidad reduce la frustración y hace que los tiempos de espera parezcan más cortos. Los usuarios no se quedarán mirando una pantalla estática, preguntándose si está pasando algo; seguirán participando y se sentirán seguros de que se está avanzando.
Los programadores utilizan barras de progreso para controlar el rendimiento de la aplicación. Ayudan a identificar los cuellos de botella, comparar el código y hacer un seguimiento de la duración de las tareas. Las barras de progreso en guiones y flujos de trabajo muestran actualizaciones de estado claras. Ayudan a los usuarios a comprender mejor los procesos de larga duración. También mejoran la usabilidad de las herramientas interactivas y los cuadernos.
Las barras de progreso también pueden servir como una forma sencilla de supervisión del rendimiento. Muestran cuánto tiempo lleva cada tarea. Esto ayuda a los programadores a detectar las fases lentas y a medir la eficacia. Esto permite comparar fácilmente diferentes implementaciones.
Barras de progreso de la línea de comandos
Las barras de progreso de la línea de comandos proporcionan información visual sobre las tareas de larga duración directamente en el terminal, haciendo que los scripts sean más informativos y fáciles de usar. Python ofrece varias bibliotecas, cada una con puntos fuertes en velocidad, personalización y estilo visual. Examinaremos cuatro de ellos: tqdm, progress, progressbar2, y alive-progress.
Tqdm: la norma en rapidez y sencillez
tqdm es una popular biblioteca de Python para crear barras de progreso. Proporciona indicadores de progreso rápidos y versátiles para bucles e iterables. Realiza un seguimiento de las iteraciones y calcula tanto el tiempo restante como el tiempo transcurrido. Esta información actualiza la barra en tiempo real. tqdm funciona en segundo plano. Predice cuánto tiempo queda y omite las actualizaciones que no son necesarias. Es fácil de aprender, consume poca memoria y está respaldado por una sólida comunidad.
Proceso de instalación
Una forma fácil de instalar tqdm es utilizar el instalador de pip. Escribe el siguiente comando desde el terminal.
pip install tqdm
Imprime el número de versión para asegurarte de que la biblioteca está instalada correctamente.
import tqdm
print(tqdm.__version__)
4.67.1
Uso básico de tqdm
tqdm es fácil de usar. Importa la biblioteca. Envuelve cualquier iterable con tqdm(iterable) para mostrar una barra de progreso.
En lugar de escribir tqdm(range(n)), puedes utilizar la abreviatura trange(n) por comodidad.
from tqdm import trange
import time
for _ in trange(100, desc="Processing"):
# Do stuff here
time.sleep(0.05) # simulate a task
Este código produce una barra de progreso en vivo durante la ejecución.
![]()
La barra de progreso muestra
- Porcentaje completado (22%)
- Número de iteraciones completadas sobre el total (224/1000)
- Tiempo transcurrido y tiempo restante estimado (12 segundos transcurridos, 42 segundos restantes)
- Iteraciones por segundo (18,09 it/s).
Para añadir una descripción a la barra de progreso, especifica la opción desc.
for i in trange(1000, desc='Processing'): # description
# Simulate a task
time.sleep(0.05)
![]()
Barras de progreso anidadas
Las barras de progreso anidadas en tqdm te ayudan a seguir el progreso en varios bucles. También son útiles cuando necesitas hacer un seguimiento de varias etapas de trabajo. Algunos ejemplos son el procesamiento por lotes, los bucles anidados y el entrenamiento de modelos.
Envuelve cada bucle en un bucle anidado con tqdm. Utiliza los argumentos posición y dejar para controlar cómo aparecen.
position: Establece la posición vertical de cada barra de progreso. posición=0 es la barra superior, posición=1 aparece debajo, y así sucesivamente.leave: Si leave=Verdadero, la barra de progreso permanece en pantalla después de que termine. Si leave=False, desaparece para evitar el desorden.
for i in trange(3, desc='Outer loop', leave=True):
for j in trange(5, desc='Inner loop', leave=False):
for j in trange(4, desc='Inner inner loop', leave=False):
time.sleep(0.05)

Las barras de progreso anidadas muestran una jerarquía clara. Te ayudan a visualizar las distintas fases de una tarea. Proporcionan información detallada a varios niveles. Esto ayuda a los programadores a identificar ralentizaciones o cuellos de botella con facilidad.
Integración de Pandas
Tqdm se integra bien con pandas. Proporciona una forma sencilla de añadir barras de progreso a las tareas de DataFrame y series. Muestra el progreso en tiempo real de funciones como apply, groupby, y map. Estas funciones pueden ser lentas con grandes conjuntos de datos.
Para activar esta función, llama a tqdm.pandas(). A continuación, utiliza progress_apply en lugar del método habitual de pandas apply. Esto mostrará una barra de progreso a medida que tu función recorra filas o columnas. Verás el progreso de la operación sin reescribir tu código.
En el siguiente programa, creamos un DataFrame con una columna llamada "números". Esta columna contiene números enteros de 0 a 1000. A continuación, generamos una nueva columna aplicando una operación "lenta" llamada slow_squared.
En lugar de utilizar la función estándar pandas apply, utilizamos progress_apply de tqdm. Aparece una barra de progreso durante la operación. Proporciona actualizaciones en tiempo real sobre el grado de procesamiento completado.
import pandas as pd
from tqdm import tqdm
import time
# Simulate a time-consuming operation
def slow_square(x):
time.sleep(0.01)
return x**2
# Create a sample DataFrame
df = pd.DataFrame({'numbers': range(1000)})
# Initialize tqdm for pandas
tqdm.pandas(desc="Processing")
# Use progress_apply instead of apply
df['slow_squared'] = df['numbers'].progress_apply(slow_square)
# Print the result
print(df.head())
El resultado del código es el siguiente

Podemos utilizar progress_apply para otras operaciones de DataFrame como groupby.
grouped = df.groupby('numbers').progress_apply(lambda g: g.sum())
Opciones de personalización
Tqdm te permite personalizar las barras de progreso para adaptarlas a distintos entornos y necesidades de los usuarios. Puedes ajustar la anchura con ncols. La página bar_format argument te ofrece un control total sobre la disposición del texto. Además, si configuras dynamic_ncols=True, la barra se redimensionará automáticamente para ajustarse al terminal.
Consideraciones de rendimiento específicas de la tqdm
Tqdm es rápido y ligero. Añade poca sobrecarga, incluso en bucles rápidos. Puedes desactivar las barras de progreso con disable=True. Esto es útil en entornos de producción donde el rendimiento es clave. Para bucles rápidos, actualizar la barra cada vez puede ser demasiado. Por eso, tqdm te permite controlar la frecuencia con la que se actualiza. Puedes utilizar parámetros como mininterval y maxinterval.
Progreso: Estilos y giros personalizables
En Progreso de Python te permite crear fácilmente barras de progreso basadas en texto para la línea de comandos. Cuenta con una API sencilla. Admite barras de progreso y spinners y permite una personalización básica de la salida. Es pequeño, rápido y no tiene dependencias. Esto lo hace ideal para guiones rápidos y configuraciones sencillas.
La biblioteca progress incluye siete estilos integrados de barras de progreso: Barra, Barra de carga, Barra de relleno de cuadrados, Barra de relleno de círculos, Barra incremental, Barra de píxeles y Barra de sombra.
Para instalarlo, utiliza pip install.
pip install progress
Para utilizarlo, importa el estilo deseado, instala una variable, utiliza .next() en el bucle y .finish() una vez finalizado el proceso. Por ejemplo, para utilizar una ChargingBar, utiliza el siguiente código.
import time
from progress.bar import ChargingBar
bar = ChargingBar('Processing', max=20)
for i in range(20):
# Do some work
time.sleep(0.5)
bar.next()
bar.finish()
`
![]()
Progress también incluye giradores para tareas de duración desconocida. El código para implementar un spinner es sencillo.
import time
from progress.spinner import Spinner
spinner = Spinner('Processing... ')
# Spinner during a task of unknown duration.
for _ in range(50):
# Do stuff
time.sleep(0.1) # simulate a running task
spinner.next()
spinner.finish()
Este código da como resultado la descripción ("Procesando...") seguida de un spinner.
La biblioteca de progreso es sencilla y ligera, pero tiene algunas limitaciones que debes tener en cuenta. No es compatible con los cuadernos Jupyter, y no puede redimensionarse dinámicamente. Además, ofrece menos opciones de personalización que bibliotecas como tqdm. Funciona bien para tareas básicas de línea de comandos, pero puede tener problemas con trabajos complejos o de alto rendimiento.
Barra de progreso2: Personalización y compatibilidad mejoradas
Barra de progreso2 es una potente biblioteca de Python. Te ayuda a crear barras de progreso flexibles y personalizables para aplicaciones de línea de comandos. Tiene muchos widgets, como porcentaje, ETA, marcadores animados y contadores. Esto lo hace ideal para tareas CLI más complejas o pulidas.
Progressbar2 ofrece más opciones de control y formato que las bibliotecas más sencillas como progress. También funciona mejor con el registro y los flujos de trabajo multihilo.
Para instalarlo, utiliza pip install.
pip install progressbar2
La clase ProgressBar de progressbar2 muestra el estado de progreso actual. Lo hace con un conjunto de widgets personalizables.
Un widget es una pieza modular que se actualiza en función del estado de la barra de progreso. Esto incluye el porcentaje completado, el tiempo transcurrido y el tiempo estimado restante.
Puedes elegir entre muchos tipos de widgets. Incluyen etiquetas de texto, marcadores de progreso, contadores, temporizadores, rotadores y formateadores personalizados. Esta variedad te permite personalizar el aspecto y la función de la barra para tu aplicación.
El uso básico de Progressbar2 es bastante sencillo.
import time
import progressbar
for i in progressbar.progressbar(range(1000)):
time.sleep(0.02)
![]()
La salida muestra el porcentaje completado, las iteraciones completadas/iteraciones totales, el tiempo transcurrido y el tiempo restante estimado.
Las bibliotecas de barras de progreso suelen basarse en la actualización de una sola línea en el terminal mediante retornos de carro (\r). Esto significa que las declaraciones normales de print() pueden interferir empujando la barra hacia abajo o corrompiendo su salida. La biblioteca progressbar2 proporciona una forma segura de imprimir mensajes sin interferir con la barra de progreso.
import time
import progressbar
bar = progressbar.ProgressBar(redirect_stdout=True)
for i in range(10):
# Do some task
time.sleep(0.1)
# Print statement
print(f'Loop #{i}')
bar.update(i)

La biblioteca progressbar2 ofrece una amplia personalización a través de su sistema modular de widgets. Los widgets muestran detalles en la barra de progreso, como el porcentaje completado, el tiempo transcurrido, el tiempo restante estimado, contadores o animaciones de la barra. Puedes mezclar y combinar estos widgets para crear una barra de progreso personalizada. Por ejemplo, puedes mostrar el porcentaje y el tiempo estimado de llegada. También puedes añadir más detalles, como nombres de archivo, marcas de tiempo o giros.
import time
import progressbar
# Define a custom set of widgets
widgets = [
'Progress: ', # Description text
progressbar.Percentage(), # Show percentage completed
' ',
progressbar.Bar(marker=':'), # Custom bar with specified marker
' ',
progressbar.ETA(), # Estimated time remaining
' | ',
progressbar.Timer(), # Time elapsed
]
# Initialize the progress bar with widgets
bar = progressbar.ProgressBar(widgets=widgets, max_value=50)
# Task
for i in range(50):
# Do stuff
time.sleep(0.1) # Simulate task
bar.update(i + 1)
![]()
Alive-progress: animaciones dinámicas para terminales modernos
Alive-progress muestra barras de progreso animadas que cambian en tiempo real. Esto da a las aplicaciones de línea de comandos un aspecto moderno y sensible. La barra avanza y muestra útiles métricas en tiempo real. Muestra el porcentaje completado, el tiempo transcurrido, el tiempo estimado restante y la velocidad de iteración. Esto la hace atractiva e informativa.
Para instalar el sitio alive-progress pip install.
pip install alive-progress
Como se muestra en su página de GitHub, para ver una demostración de sus capacidades, utiliza el siguiente código.
from alive_progress.styles import showtime
showtime()
Verás un resultado similar al siguiente.

Alive-progress tiene la capacidad de mostrar y gestionar varias barras de progreso simultáneamente.
from alive_progress import alive_bar
import time
import threading
# Simulate a task
def simulate_task(name, total):
with alive_bar(total, title=name) as bar:
for _ in range(total):
# Do something
time.sleep(0.5)
bar()
# Define threads
threads = [
threading.Thread(target=simulate_task, args=('Task A', 50)),
threading.Thread(target=simulate_task, args=('Task B', 70)),
threading.Thread(target=simulate_task, args=('Task C', 40)),
]
# Start each thread
for t in threads:
t.start()
# Block the main thread until the program is finished
for t in threads:
t.join()

La biblioteca alive-progress incluye varios temas incorporados. Los temas controlan elementos como el estilo de animación, los caracteres utilizados para rellenar la barra y el efecto general del movimiento. Algunos temas comunes son classic, pulse y brackets.
import time
from alive_progress import alive_bar
with alive_bar(100, bar='blocks') as bar:
for _ in range(100):
# Do something
time.sleep(0.02)
bar()
![]()
Pausa/reanudar - detener temporalmente y reanudar el progreso sin perder el estado
from alive_progress import alive_bar
import time
# Run a task...
with alive_bar(100) as bar:
for i in range(50):
# Do something
time.sleep(0.02)
bar()
# Pause
bar.text('Temporarily pausing...')
time.sleep(1)
# Resume
bar.text('Resuming...')
for i in range(50):
time.sleep(0.02)
bar()
![]()
Barras de progreso GUI con Tkinter
Tkinter es el conjunto de herramientas GUI (Interfaz Gráfica de Usuario) estándar de Python. El diseño incluye funciones integradas y está listo para usar, por lo que no necesitas instalar nada adicional. Puedes crear ventanas, botones, campos de texto, menús, barras de progreso y mucho más. Tkinter es ideal para crear aplicaciones de escritorio sencillas, herramientas interactivas y prototipos.
Se puede crear una barra de progreso básica utilizando el código siguiente.
import tkinter as tk
from tkinter import ttk
import time
def start_progress():
progress["value"] = 0
root.update_idletasks()
for i in range(101):
time.sleep(0.02)
progress["value"] = i
root.update_idletasks()
# Set up the window
root = tk.Tk()
root.title("Progress Bar")
root.geometry("300x100")
# Create a progress bar
progress = ttk.Progressbar(root, orient="horizontal", length=250, mode="determinate")
progress.pack(pady=20)
# Create a start button
start_button = ttk.Button(root, text="Start", command=start_progress)
start_button.pack()
# Start the tkinter loop
root.mainloop()
Salida en mi Mac:

Hay dos modos disponibles con ttk.Progressbar: determinado e indeterminado. El modo determinado se utiliza cuando se conoce la duración o el número de pasos de una tarea. El modo indeterminado se utiliza cuando la duración de la tarea es desconocida o no puede medirse en pasos.
El código anterior es para un modo determinado, ya que sabíamos que la longitud de la tarea era de 250 pasos. A continuación se presenta un ejemplo de modo indeterminado.
import tkinter as tk
from tkinter import ttk
import time
import threading
def start_indeterminate():
def run():
# 10 ms between moves
progress.start(10)
# Simulate task of unknown duration
time.sleep(10)
# Stop
progress.stop()
# Run in a thread, else the tkinter GUI loop is unresponsive
threading.Thread(target=run).start()
# Set up the GUI
root = tk.Tk()
root.title("Indeterminate Progress Bar")
root.geometry("300x100")
# Create an indeterminate progress bar
progress = ttk.Progressbar(root, mode='indeterminate', length=250)
progress.pack(pady=20)
# Start button
start_button = ttk.Button(root, text="Start", command=start_indeterminate)
start_button.pack()
# Run the tkinter loop
root.mainloop()

Ten en cuenta que la barra de progreso se ejecutó en un hilo independiente. Si utilizáramos run() directamente en el hilo principal, la llamada a time.sleep() bloquearía el bucle de eventos principal de Tkinter y provocaría la congelación de toda la interfaz gráfica de usuario, incluidos los clics de los botones, el redibujado de las ventanas y la animación de la barra de progreso.
Consideraciones sobre el rendimiento y optimización
¿Qué biblioteca debes utilizar para tu barra de progreso? Parte de la decisión depende de tus requisitos de sobrecarga y de tu caso de uso.
|
Biblioteca |
Sobrecarga |
Caso práctico |
|
tqdm |
Muy bajo |
Bucles rápidos, canalización de datos, impacto mínimo en el rendimiento |
|
progreso |
Baja |
Scripts CLI sencillos, ligeros y sin dependencias |
|
barra de progreso2 |
Moderado |
Diseños personalizados, ETA y registro; ligera ralentización en tareas rápidas |
|
vivo-progreso |
Moderada a alta |
Tareas visualmente ricas, salida multibarra, animaciones suaves; mejor para tareas largas |
Para mejorar el rendimiento, optimiza la frecuencia de actualización. Un método consiste en no actualizar la barra en cada iteración. Esto es especialmente importante en los bucles rápidos o de alta frecuencia. Utiliza la lógica condicional para actualizar cada N pasos, por ejemplo, cada 100 iteraciones.
En ajustes críticos de rendimiento o código de producción, desactiva las barras de progreso. Aquí no se necesita información visual. Esto ahorra recursos al tiempo que garantiza que la lógica sigue siendo la misma para el desarrollo o la depuración.
Reducir las operaciones de E/S es clave para el rendimiento. Escribir en el terminal, en el disco o en la red puede ralentizar las cosas. He aquí algunas estrategias para reducir la E/S en tareas críticas para el rendimiento.
- Almacena la salida y escribe por lotes en lugar de por iteración.
- Actualiza sólo a intervalos fijos o en condiciones específicas.
- Minimiza o desactiva print() dentro de los bucles.
- Añade banderas para suprimir la salida innecesaria en producción.
- Separa la E/S y el cálculo utilizando hilos o multiprocesamiento.
- Comprime o agrupa por lotes las escrituras grandes para reducir la frecuencia de E/S del disco.
Buenas prácticas para barras de progreso eficaces
Veamos algunas de las mejores prácticas a tener en cuenta al crear barras de progreso en Python.
¿Por qué utilizar barras de progreso?
Hay muchas buenas razones para utilizar barras de progreso en tus aplicaciones. En primer lugar, proporcionan información en tiempo real, tranquilizando a los usuarios sobre el progreso de las tareas y reduciendo la incertidumbre. Esta visibilidad mejora la experiencia del usuario, haciendo que los tiempos de espera parezcan más cortos y las interacciones más intuitivas.
En segundo lugar, al realizar un seguimiento visual de la finalización de las tareas, las barras de progreso facilitan la supervisión del rendimiento, lo que permite tanto a los usuarios como a los programadores detectar rápidamente cuellos de botella o procesos estancados durante operaciones de larga duración. Por último, incorporar barras de progreso eleva la profesionalidad de la interfaz de tu aplicación, transmitiendo claridad y un enfoque de diseño reflexivo y centrado en el usuario.
Tareas de duración conocida frente a tareas de duración desconocida
Utiliza una barra de progreso determinada para las tareas que tengan un tiempo establecido. Esto incluye el procesamiento de archivos, bucles o épocas de entrenamiento de machine learning. Este tipo de barra se rellena en función del progreso medible y da a los usuarios una idea clara de cuánto trabajo queda por hacer.
Para las tareas de duración desconocida, como las llamadas a la API o las comprobaciones en segundo plano, utiliza un spinner o una barra indeterminada. Ofrecen una señal visual de que el proceso está en marcha, aunque no podamos predecir cuánto durará.
¿Qué biblioteca debo utilizar?
La biblioteca La biblioteca que utilices depende de las tareas que intentes realizar.
|
Tarea |
Biblioteca |
Notas |
|
Bucles de alta frecuencia |
tqdm |
Ligero, eficiente; utiliza el minintervalo para reducir las actualizaciones |
|
Guiones sencillos y puntuales |
progreso |
Configuración mínima, sin dependencias, ideal para tareas rápidas |
|
Salida estructurada o personalizada |
barra de progreso2 |
Basado en widgets, admite ETA, temporizadores y control de diseño |
|
Tareas multietapa o anidadas |
tqdm, vivo-progreso |
Admite barras anidadas o visualizaciones multibarra para tareas en capas |
|
Scripts CLI con pulido visual |
vivo-progreso |
Visuales animados y modernos, experiencia de usuario fluida |
|
Aplicaciones GUI |
tkinter |
Conjunto de herramientas GUI incorporado con barras determinadas e indeterminadas |
Personalización
Cuando personalices las barras de progreso, céntrate en la claridad y la información útil. Esfuérzate por conseguir un buen equilibrio entre ambos. Una barra clara y sencilla con métricas clave suele ser mejor que una abarrotada con demasiada información.
Puedes utilizar bibliotecas como progressbar2 y alive-progress. Te permiten cambiar el diseño, el color y la animación de tus barras de progreso. Utilizar temas o formatos para mejorar la experiencia del usuario. Evita saturar la pantalla con demasiados widgets o elementos visuales complejos. El objetivo es dar una respuesta útil. Queremos evitar distraer al usuario o que se sienta abrumado.
Tratamiento de excepciones y pruebas de compatibilidad
Envuelve la lógica de la barra de progreso en bloques try-except. Esto ayuda a evitar fallos en la interfaz de usuario o bloqueos si se produce un error durante una tarea. Esto es clave en los scripts que se ejecutan durante mucho tiempo o cuando se utilizan dependencias externas inciertas.
Además, prueba tus barras de progreso en distintos entornos. Compruébalo en varios sistemas operativos, tipos de terminal y anchos de pantalla. Así te asegurarás de que su comportamiento sigue siendo coherente.
Algunas bibliotecas se comportan de forma diferente en cuadernos Jupyter, terminales remotos o shells GUI. Verificar la compatibilidad con antelación puede ayudar a evitar problemas inesperados. De este modo, los usuarios tendrán una experiencia más fluida en la producción.
Consideraciones sobre accesibilidad
Cuando crees indicadores de progreso, ten en cuenta la accesibilidad. Esto ayuda a que todos los usuarios reciban una respuesta clara. Algunas sugerencias:
- No confíes sólo en el color o la animación para mostrar el progreso. Añade elementos de texto como porcentajes, recuento de pasos o estimaciones de tiempo.
- Utiliza elementos visuales claros y de alto contraste para mejorar la legibilidad.
- Asegúrate de que tus barras de progreso funcionan bien con lectores de pantalla en aplicaciones GUI.
- Para las herramientas de línea de comandos, considera las opciones de verbosidad que imprimen las actualizaciones de progreso en texto sin formato.
Hacer de la accesibilidad una prioridad aumenta la usabilidad. También hace que tus herramientas sean más inclusivas y profesionales.
Conclusión
Las barras de progreso son una función sencilla pero potente para cualquier aplicación Python. Proporcionan información instantánea, mejoran la experiencia del usuario y controlan el rendimiento y la claridad del código. Elegir la biblioteca de barras de progreso adecuada es clave. Puede mejorar tu software, tanto si estás creando un script rápido, una herramienta de línea de comandos o una aplicación GUI completa. Una implementación meditada puede mejorar la velocidad, profesionalidad y facilidad de uso de tu software. Dar prioridad a la personalización, el rendimiento, la compatibilidad y la accesibilidad hace que las barras de progreso sean algo más que meros elementos visuales. Se convierten en una parte importante del modo en que los usuarios se relacionan con tu trabajo.
Para seguir aprendiendo, consulta estos recursos:
Preguntas frecuentes sobre la barra de progreso en Python
¿Qué es una barra de progreso?
Una barra de progreso es un indicador visual que muestra cuánto de una tarea se ha completado y cuánto queda. Mejora la experiencia del usuario proporcionándole información durante las operaciones largas.
¿Cuáles son las bibliotecas populares de barras de progreso en Python?
Las bibliotecas más comunes son tqdm, progress, progressbar2, y alive-progress.
¿Puedo utilizar barras de progreso con la biblioteca pandas?
Sí, puedes. tqdm se integra con pandas a través de progress_apply() (en lugar de apply) y métodos similares.
¿Puedo personalizar el aspecto de una barra de progreso?
Sí. Bibliotecas como tqdm y progressbar2 te permiten personalizar el diseño, la anchura, el color y la frecuencia de actualización.
¿Qué biblioteca debo utilizar para Jupyter Notebooks?
La biblioteca tqdm.notebook se integra bien con Jupyter.

Mark Pedigo, PhD, es un distinguido científico de datos con experiencia en ciencia de datos sanitarios, programación y educación. Doctor en Matemáticas, Licenciado en Informática y Certificado Profesional en Inteligencia Artificial, Mark combina los conocimientos técnicos con la resolución práctica de problemas. Su carrera incluye funciones en la detección del fraude, la predicción de la mortalidad infantil y la previsión financiera, junto con contribuciones al software de estimación de costes de la NASA. Como educador, ha impartido clases en DataCamp y en la Universidad Washington de San Luis, y ha sido mentor de programadores noveles. En su tiempo libre, Mark disfruta de la naturaleza de Minnesota con su esposa Mandy y su perro Harley, y toca el piano de jazz.


