Imprime bastante una serie completa de Pandas / DataFrame

Trabajo mucho con Series y DataFrames en la terminal. El valor predeterminado __repr__ para una Serie devuelve una muestra reducida, con algunos valores de cabeza y cola, pero el rest falta.

¿Existe una forma integrada de imprimir de manera bonita toda la serie / dataframe? Idealmente, admitiría una alineación adecuada, tal vez bordes entre columnas, y tal vez incluso códigos de colores para las diferentes columnas.

También puede usar el option_context , con una o más opciones:

 with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(df) 

Esto devolverá automáticamente las opciones a sus valores predeterminados.

Si está trabajando en jupyter-notebook, usar la display lugar de print usará la lógica de visualización rica en jupyter.

No hay necesidad de hackear la configuración. Hay una forma sencilla:

 print(df.to_string()) 

Claro, si esto surge mucho, haz una función como esta. Incluso puede configurarlo para que se cargue cada vez que inicie IPython: https://ipython.org/ipython-doc/1/config/overview.html

 def print_full(x): pd.set_option('display.max_rows', len(x)) print(x) pd.reset_option('display.max_rows') 

En cuanto a colorear, ser demasiado elaborado con los colores me parece contraproducente, pero estoy de acuerdo en que algo como el bootstrap’s .table-striped sería bueno. Siempre se puede crear un problema para sugerir esta característica.

Después de importar pandas, como alternativa al uso del administrador de contexto, configure estas opciones para mostrar los marcos de datos completos:

 pd.set_option('display.max_columns', None) # or 1000 pd.set_option('display.max_rows', None) # or 1000 pd.set_option('display.max_colwidth', -1) # or 199 

Para la lista completa de opciones útiles, vea:

 pd.describe_option('display') 

Utilice el paquete tabular:

 pip install tabulate 

Y considere el siguiente ejemplo de uso:

 import pandas as pd from io import StringIO from tabulate import tabulate c = """Chromosome Start End chr1 3 6 chr1 5 7 chr1 8 9""" df = pd.read_table(StringIO(c), sep="\s+", header=0) print(tabulate(df, headers='keys', tablefmt='psql')) +----+--------------+---------+-------+ | | Chromosome | Start | End | |----+--------------+---------+-------| | 0 | chr1 | 3 | 6 | | 1 | chr1 | 5 | 7 | | 2 | chr1 | 8 | 9 | +----+--------------+---------+-------+ 

Si está utilizando Ipython Notebook (Jupyter). Puedes usar HTML

 from IPython.core.display import HTML display(HTML(df.to_html())) 

Prueba esto

 pd.set_option('display.height',1000) pd.set_option('display.max_rows',500) pd.set_option('display.max_columns',500) pd.set_option('display.width',1000) 

Esta respuesta es una variación de la respuesta anterior por lucidyan . Hace que el código sea más legible al evitar el uso de set_option .

Después de importar pandas, como alternativa al uso del administrador de contexto, configure estas opciones para mostrar grandes marcos de datos:

 def set_pandas_options() -> None: pd.options.display.max_columns = 1000 pd.options.display.max_rows = 1000 pd.options.display.max_colwidth = 199 pd.options.display.width = None # pd.options.display.precision = 2 # set as needed set_pandas_options() 

Después de esto, puede usar la display(df) o simplemente df si usa una notebook, de lo contrario print(df) .

Puede lograr esto utilizando el método de abajo. acaba de pasar el total no. de columnas presentes en el dataframe como arg para

‘display.max_columns’

Por ejemplo:

 df= DataFrame(..) with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]): print(df)