tabulate mac instalar python shell pandas printing dataframe

python - mac - Cómo imprimir un df en la Terminal sin perder el formato?



install tabulate python mac (2)

Hay opciones de visualización que se pueden usar para controlar cómo se DataFrame el DataFrame . Probablemente quieras:

In [28]: pd.set_option(''expand_frame_repr'', False) In [29]: pd.set_option(''display.max_columns'', 999)

¿Cómo puedo imprimir un df en la Terminal sin perder el formato?

Digamos que tengo un df como este:

In: df Out: TFs No Esenciales Genes regulados Genes Regulados Positivamente Genes Regulados Negativamente No Tentativo de genes a silenciar No Real de genes a silenciar No Tentativo de genes a inducir 146 YdeO 20 18 2 2 2 0

Pero cuando uso print para mostrarlo en el shell, pierde su formato

In: print (df) Out: TFs No Esenciales Genes regulados Genes Regulados Positivamente / 146 YdeO 20 18 Genes Regulados Negativamente No Tentativo de genes a silenciar / 146 2 2 No Real de genes a silenciar No Tentativo de genes a inducir / 146 2 0 No Real de genes a inducir Balance de genes Balance real de genes 146 0 2 2

¿Cómo puedo usar imprimir, pero mantener el formato?

Mi resultado deseado es:

In: print (df) Out: TFs No Esenciales Genes regulados Genes Regulados Positivamente Genes Regulados Negativamente No Tentativo de genes a silenciar No Real de genes a silenciar No Tentativo de genes a inducir 146 YdeO 20 18 2 2 2 0


DOCUMENTACIÓN

Hay 2 cosas sucediendo que controlan el formato que puede ver.

  1. Controlando el ancho del carácter que la pantalla puede manejar.

    • Esto se maneja con la opción display.width y se puede ver con print pd.get_option(''display.width'') . El valor predeterminado es 80 .
  2. El segundo control es el número de columnas en el marco de datos para mostrar.

    • Esto se maneja con la opción pandas display.max_columns y se puede ver con print pd.get_option(''display.max_columns'') . El valor predeterminado es 20 .

display.width

Vamos a explorar qué hace esto con un marco de datos de muestra

import pandas as pd df = pd.DataFrame([range(40)], columns=[''ABCDE%d'' % i for i in range(40)]) print df # this is with default ''display.width'' of 80 ABCDE0 ABCDE1 ABCDE2 ABCDE3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 ABCDE8 / 0 0 1 2 3 4 5 6 7 8 ABCDE9 ... ABCDE30 ABCDE31 ABCDE32 ABCDE33 ABCDE34 ABCDE35 / 0 9 ... 30 31 32 33 34 35 ABCDE36 ABCDE37 ABCDE38 ABCDE39 0 36 37 38 39 [1 rows x 40 columns]

pd.set_option(''display.width'', 40)

print df ABCDE0 ABCDE1 ABCDE2 ABCDE3 / 0 0 1 2 3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 / 0 4 5 6 7 ABCDE8 ABCDE9 ... ABCDE30 / 0 8 9 ... 30 ABCDE31 ABCDE32 ABCDE33 ABCDE34 / 0 31 32 33 34 ABCDE35 ABCDE36 ABCDE37 ABCDE38 / 0 35 36 37 38 ABCDE39 0 39 [1 rows x 40 columns]

pd.set_option(''display.width'', 120)

Esto debería desplazarse hacia la derecha.

print df ABCDE0 ABCDE1 ABCDE2 ABCDE3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 ABCDE8 ABCDE9 ... ABCDE30 ABCDE31 ABCDE32 / 0 0 1 2 3 4 5 6 7 8 9 ... 30 31 32 ABCDE33 ABCDE34 ABCDE35 ABCDE36 ABCDE37 ABCDE38 ABCDE39 0 33 34 35 36 37 38 39 [1 rows x 40 columns]

display.max_columns

Pongamos ''display.width'' nuevo en 80 con pd.set_option(''display.width,80)

Ahora exploremos diferentes valores de ''display.max_columns''

print df # default 20 ABCDE0 ABCDE1 ABCDE2 ABCDE3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 ABCDE8 / 0 0 1 2 3 4 5 6 7 8 ABCDE9 ... ABCDE30 ABCDE31 ABCDE32 ABCDE33 ABCDE34 ABCDE35 / 0 9 ... 30 31 32 33 34 35 ABCDE36 ABCDE37 ABCDE38 ABCDE39 0 36 37 38 39 [1 rows x 40 columns]

Observe las elipsis en el medio. Hay 40 columnas en este marco de datos, para obtener un conteo de 20 columnas máximas, los pandas tomaron las primeras 10 columnas 0:9 y las últimas 10 columnas 30:39 y pusieron una elipsis en el medio.

pd.set_option(''display.max_columns'', 30)

print df ABCDE0 ABCDE1 ABCDE2 ABCDE3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 ABCDE8 / 0 0 1 2 3 4 5 6 7 8 ABCDE9 ABCDE10 ABCDE11 ABCDE12 ABCDE13 ABCDE14 ... ABCDE25 / 0 9 10 11 12 13 14 ... 25 ABCDE26 ABCDE27 ABCDE28 ABCDE29 ABCDE30 ABCDE31 ABCDE32 ABCDE33 / 0 26 27 28 29 30 31 32 33 ABCDE34 ABCDE35 ABCDE36 ABCDE37 ABCDE38 ABCDE39 0 34 35 36 37 38 39 [1 rows x 40 columns]

Tenga en cuenta que el ancho de los caracteres se mantuvo igual, pero tengo más columnas. los pandas tomaron las primeras 15 columnas 0:14 y las últimas 15 columnas 26:39 .

Para mostrar todas sus columnas, debe configurar esta opción para que sea al menos tan grande como la cantidad de columnas que desea mostrar.

pd.set_option(''display.max_columns'', 40)

print df ABCDE0 ABCDE1 ABCDE2 ABCDE3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 ABCDE8 / 0 0 1 2 3 4 5 6 7 8 ABCDE9 ABCDE10 ABCDE11 ABCDE12 ABCDE13 ABCDE14 ABCDE15 ABCDE16 / 0 9 10 11 12 13 14 15 16 ABCDE17 ABCDE18 ABCDE19 ABCDE20 ABCDE21 ABCDE22 ABCDE23 ABCDE24 / 0 17 18 19 20 21 22 23 24 ABCDE25 ABCDE26 ABCDE27 ABCDE28 ABCDE29 ABCDE30 ABCDE31 ABCDE32 / 0 25 26 27 28 29 30 31 32 ABCDE33 ABCDE34 ABCDE35 ABCDE36 ABCDE37 ABCDE38 ABCDE39 0 33 34 35 36 37 38 39

Sin elipsis, se muestran todas las columnas.

Combinando ambas opciones juntas

Muy simple en este punto. pd.set_option(''display.width'', 1000) usa 1000 para permitir algo largo. pd.set_option(''display.max_columns'', 1000) también permite cuadros de datos anchos.

print df ABCDE0 ABCDE1 ABCDE2 ABCDE3 ABCDE4 ABCDE5 ABCDE6 ABCDE7 ABCDE8 ABCDE9 ABCDE10 ABCDE11 ABCDE12 ABCDE13 ABCDE14 ABCDE15 ABCDE16 ABCDE17 ABCDE18 ABCDE19 ABCDE20 ABCDE21 ABCDE22 ABCDE23 ABCDE24 ABCDE25 ABCDE26 ABCDE27 ABCDE28 ABCDE29 ABCDE30 ABCDE31 ABCDE32 ABCDE33 ABCDE34 ABCDE35 ABCDE36 ABCDE37 ABCDE38 ABCDE39 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

Usando tus datos

print df TFs No Esenciales Genes regulados Genes.1 Regulados Positivamente Genes.2 Regulados.1 Negativamente No.1 Tentativo de genes a silenciar No.2 Real de.1 genes.1 a.1 silenciar.1 No.3 Tentativo.1 de.2 genes.2 a.2 inducir 0 146 YdeO 20 18 2 2 2 0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

GRAN CAVEAT

Cuando ejecutas esto, es posible que no veas esta magia de desplazamiento que haces aquí. Esto se debe a que su terminal probablemente no se desplaza hacia la derecha. A continuación se muestra una captura de pantalla de jupyter-notebook. No se ve bien porque el texto está siendo envuelto. Sin embargo, no hay líneas nuevas en la cadena donde se envuelve, como lo demuestra el hecho de que cuando lo copié y pegué en el desbordamiento de la pila, se muestra correctamente.

1.