HOWTO · Python
Imprimir datos en formato tabular en Python
Este tutorial demuestra cómo imprimir datos en formato tabular en Python
En esta página
Las listas conservan el orden de sus elementos, pero imprimir directamente una lista de filas puede dificultar la lectura de la relación entre los valores. Dar formato a cada fila en columnas facilita la lectura de un informe pequeño en la terminal. Esta guía usa los mismos tres registros de estudiantes en cada método para que puedas compararlos y elegir el que mejor se adapte a tu programa.
Dar formato a las filas de una lista con str.format()
El método de cadena str.format() permite controlar directamente cada columna sin instalar un paquete. En un campo de formato como "{:<8}", < alinea un valor a la izquierda y 8 establece un ancho mínimo de ocho caracteres. El ancho añade espacios de relleno cuando un valor es más corto; no trunca los valores más largos, por lo que las entradas extensas pueden desalinear las columnas siguientes. Aumenta el ancho si tus datos necesitan más espacio.
Ejecuta este ejemplo. El código y las etiquetas visibles que contiene se mantienen en inglés:
rows = [["Mark", 12, 95], ["Jay", 11, 88], ["Jack", 14, 90]]
columns = ["Name", "Age", "Percent"]
row_format = "{:<8} {:<8} {:<10}"
print(row_format.format(*columns))
for row in rows:
print(row_format.format(*row))
Se imprime un encabezado seguido de una línea por cada fila. Ajusta los anchos de row_format según los valores más largos que esperes. Este método funciona bien con un conjunto pequeño y fijo de columnas cuando quieres definir explícitamente el diseño de la salida.
Imprimir filas con tabulate
El paquete opcional tabulate crea una tabla de texto legible a partir de los datos de las filas y sus encabezados. Instálalo en el entorno de Python que usa tu programa con python -m pip install tabulate. Después, pasa las filas y las etiquetas de las columnas a tabulate(). El código y las etiquetas visibles que contiene se mantienen en inglés:
import importlib.util
if importlib.util.find_spec("tabulate") is None:
print("Install tabulate with: python -m pip install tabulate")
else:
from tabulate import tabulate
rows = [["Mark", 12, 95], ["Jay", 11, 88], ["Jack", 14, 90]]
headers = ["Name", "Age", "Percent"]
print(tabulate(rows, headers=headers))
Una vez instalado, el paquete elige los anchos según los valores y añade un separador debajo del encabezado. Así no tienes que mantener cadenas de relleno, aunque el estilo de tabla elegido depende del paquete. Otros paquetes, como PrettyTable, termtable y texttable, ofrecen sus propias opciones de formato.
Mostrar datos de una lista con pandas.DataFrame
Usa pandas.DataFrame cuando esos mismos registros también formen parte de un flujo de trabajo de análisis de datos. Instala pandas en el entorno donde se ejecuta el script con python -m pip install pandas. Pasa la lista de filas y los nombres de las columnas al constructor y, después, imprime el DataFrame resultante. El código y las etiquetas visibles que contiene se mantienen en inglés:
import importlib.util
if importlib.util.find_spec("pandas") is None:
print("Install pandas with: python -m pip install pandas")
else:
import pandas as pd
rows = [["Mark", 12, 95], ["Jay", 11, 88], ["Jack", 14, 90]]
columns = ["Name", "Age", "Percent"]
table = pd.DataFrame(rows, columns=columns)
print(table)
Pandas muestra un índice de filas junto con las columnas con nombre. Un DataFrame resulta útil si vas a seguir seleccionando, transformando o resumiendo los registros; para una tabla puntual en la terminal, añade una dependencia que quizá puedas evitar con una cadena de formato o con tabulate.
Elegir un método para imprimir tablas
Elige str.format() para crear un informe sin dependencias y definir explícitamente los anchos de columna. Elige tabulate si quieres una tabla cómoda para la terminal y puedes añadir ese paquete al entorno del proyecto. Elige pandas.DataFrame si imprimir es un paso dentro de una tarea de datos más amplia y el proyecto ya usa pandas.
Los tres ejemplos parten de la misma estructura de lista de listas: cada lista interna es una fila y los valores que ocupan la misma posición pertenecen a la misma columna. Mantén las etiquetas de las columnas en el mismo orden que esas posiciones. Si las filas tienen longitudes distintas o hay valores más anchos que los campos elegidos, normaliza los datos o ajusta el formato antes de depender de la alineación de ancho fijo.