¿Cómo amplío la visualización de salida para ver más columnas de un Pandas DataFrame?

Resuelto beets asked hace 12 años • 23 respuestas

¿Hay alguna manera de ampliar la visualización de la salida en modo interactivo o de ejecución de script?

Específicamente, estoy usando la describe()función en Pandas DataFrame. Cuando DataFrametiene cinco columnas (etiquetas) de ancho, obtengo las estadísticas descriptivas que quiero. Sin embargo, si DataFrametiene más columnas, las estadísticas se suprimen y se devuelve algo como esto:

>> Index: 8 entries, count to max
>> Data columns:
>> x1          8  non-null values
>> x2          8  non-null values
>> x3          8  non-null values
>> x4          8  non-null values
>> x5          8  non-null values
>> x6          8  non-null values
>> x7          8  non-null values

El valor "8" se proporciona si hay 6 o 7 columnas. ¿A qué se refiere el "8"?

Ya intenté arrastrar la ventana IDLE más grande, así como aumentar las opciones de ancho de "Configurar IDLE", sin éxito.

beets avatar Jul 29 '12 14:07 beets
Aceptado

Actualización: Pandas 0.23.4 en adelante

Esto no es necesario. Pandas detecta automáticamente el tamaño de la ventana de su terminal si configura pd.options.display.width = 0. (Para versiones anteriores, consulte la parte inferior).

pandas.set_printoptions(...)es obsoleto. En su lugar, utilice pandas.set_option(optname, val), o equivalentemente pd.options.<opt.hierarchical.name> = val. Como:

import pandas as pd
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

Aquí está la ayuda paraset_option :

set_option(pat,value) - Establece el valor de la opción especificada

Opciones Disponibles:
display.[chop_threshold, colheader_justify, column_space, date_dayfirst,
         date_yearfirst, codificación, expand_frame_repr, float_format, altura,
         ancho_línea, columnas_max, ancho_col_max, columnas_info_max, columnas_max_info,
         max_rows, max_seq_items, mpl_style, multi_sparse, notebook_repr_html,
         pprint_nest_profundidad, precisión, ancho]
modo.[sim_interactive, use_inf_as_null]

Parámetros
----------
pat - str/regexp que debería coincidir con una sola opción.

Nota: se admiten coincidencias parciales por conveniencia, pero a menos que use el
nombre completo de la opción (p. ej., *xyzoption_name*), su código puede fallar en el futuro
versiones si se introducen nuevas opciones con nombres similares.

valor: nuevo valor de la opción.

Devoluciones
-------
Ninguno

aumentos
------
KeyError si no existe tal opción

display.chop_threshold: [predeterminado: Ninguno] [actualmente: Ninguno]
: flotante o Ninguno
        si se establece en un valor flotante, todos los valores flotantes son más pequeños que el umbral dado
        Repr y amigos lo mostrarán exactamente como 0.
display.colheader_justify: [predeterminado: derecho] [actualmente: derecho]
: 'izquierda derecha'
        Controla la justificación de los encabezados de columna. utilizado por DataFrameFormatter.
display.column_space: [predeterminado: 12] [actualmente: 12]No hay descripción disponible.

display.date_dayfirst: [predeterminado: Falso] [actualmente: Falso]
: booleano
        Cuando es Verdadero, imprime y analiza las fechas con el día primero, por ejemplo, 20/01/2005.
display.date_yearfirst: [predeterminado: Falso] [actualmente: Falso]
: booleano
        Cuando es Verdadero, imprime y analiza las fechas con el año primero, por ejemplo, 2005/01/20
display.encoding: [predeterminado: UTF-8] [actualmente: UTF-8]
: cadena/unicode
        El valor predeterminado es la codificación detectada de la consola.
        Especifica la codificación que se utilizará para las cadenas devueltas por to_string,
        generalmente son cadenas destinadas a mostrarse en la consola.
display.expand_frame_repr: [predeterminado: Verdadero] [actualmente: Verdadero]
: booleano
        Si se debe imprimir la representación completa de DataFrame para DataFrames amplios
        en varias líneas, todavía se respeta `max_columns`, pero la salida
        envolvente en varias "páginas" si su ancho excede `display.width`.
display.float_format: [predeterminado: Ninguno] [actualmente: Ninguno]
: invocable
        El invocable debe aceptar un número de coma flotante y devolver
        una cadena con el formato deseado del número. esto se usa
        en algunos lugares como SeriesFormatter.
        Consulte core.format.EngFormatter para ver un ejemplo.
display.height: [predeterminado: 60] [actualmente: 1000]
: En t
        Obsoleto.
        (En desuso, use `display.height` en su lugar).

display.line_width: [predeterminado: 80] [actualmente: 1000]
: En t
        Obsoleto.
        (En desuso, use `display.width` en su lugar).

display.max_columns: [predeterminado: 20] [actualmente: 500]
: En t
        max_rows y max_columns se utilizan en los métodos __repr__() para decidir si
        to_string() o info() se utiliza para representar un objeto en una cadena. En caso
        Python/IPython se está ejecutando en una terminal, esto se puede configurar en 0 y Pandas
        detectará automáticamente el ancho del terminal y cambiará a uno más pequeño
        formato en caso de que todas las columnas no encajen verticalmente. El cuaderno IPython,
        IPython qtconsole o IDLE no se ejecutan en una terminal y, por lo tanto, no es
        posible realizar una autodetección correcta.
        El valor 'Ninguno' significa ilimitado.
display.max_colwidth: [predeterminado: 50] [actualmente: 50]
: En t
        El ancho máximo en caracteres de una columna en la repr de
        una estructura de datos de Pandas. Cuando la columna se desborda, aparece un "..."
        El marcador de posición está incrustado en la salida.
display.max_info_columns: [predeterminado: 100] [actualmente: 100]
: En t
        max_info_columns se utiliza en el método DataFrame.info para decidir si
        Se imprimirá la información por columna.
display.max_info_rows: [predeterminado: 1690785] [actualmente: 1690785]
: int o Ninguno
        max_info_rows es el número máximo de filas para las que se creará un marco.
        realice una verificación nula en sus columnas al reproducir en una consola.
        El valor predeterminado es 1.000.000 de filas. Entonces, si un DataFrame tiene más
        1.000.000 de filas no se realizará ninguna comprobación nula en el
        columnas y por lo tanto la representación tomará mucho menos tiempo para
        mostrar en una sesión interactiva. Un valor de Ninguno significa siempre
        realice una verificación nula al repetir.
display.max_rows: [predeterminado: 60] [actualmente: 500]
: En t
        Esto establece el número máximo de filas que Pandas debe generar al imprimir.
        realizar diversas salidas. Por ejemplo, este valor determina si repr()
        para un marco de datos se imprime completo o solo un resumen.
        El valor 'Ninguno' significa ilimitado.
display.max_seq_items: [predeterminado: Ninguno] [actualmente: Ninguno]
: int o Ninguno

        al imprimir una secuencia larga, no más de `max_seq_items`
        se imprimirá. Si se omiten elementos, se indicarán mediante la adición
        de "..." a la cadena resultante.

        Si se establece en Ninguno, la cantidad de elementos que se imprimirán es ilimitada.
display.mpl_style: [predeterminado: Ninguno] [actualmente: Ninguno]
: booleano

        Establecer esto en 'predeterminado' modificará los rcParams utilizados por matplotlib
        para dar a las tramas un estilo visual más agradable de forma predeterminada.
        Establecer esto en Ninguno/Falso restaura los valores a su valor inicial.
display.multi_sparse: [predeterminado: Verdadero] [actualmente: Verdadero]
: booleano
        Visualización MultiIndex "sparsify" (no mostrar imágenes repetidas)
        elementos en niveles externos dentro de grupos)
display.notebook_repr_html: [predeterminado: Verdadero] [actualmente: Verdadero]
: booleano
        Cuando es Verdadero, el cuaderno IPython utilizará representación html para
        Objetos Pandas (si está disponible).
display.pprint_nest_ Depth: [predeterminado: 3] [actualmente: 3]
: En t
        Controla el número de niveles anidados que se procesarán durante la impresión bonita
display.precision: [predeterminado: 7] [actualmente: 7]
: En t
        Precisión de salida de coma flotante (número de dígitos significativos). Esto es
        solo una sugerencia
display.width: [predeterminado: 80] [actualmente: 1000]
: En t
        Ancho de la pantalla en caracteres. En caso de que Python/IPython se esté ejecutando
        En un terminal, esto se puede configurar en Ninguno y Pandas detectará automáticamente el
        ancho.
        Tenga en cuenta que IPython notebook, IPython qtconsole o IDLE no se ejecutan en un
        terminal y por lo tanto no es posible detectar correctamente el ancho.
mode.sim_interactive: [predeterminado: Falso] [actualmente: Falso]
: booleano
        Si se debe simular el modo interactivo con fines de prueba
mode.use_inf_as_null: [predeterminado: Falso] [actualmente: Falso]
: booleano
        Verdadero significa tratar Ninguno, NaN, INF, -INF como nulo (forma antigua),
        Falso significa que Ninguno y NaN son nulos, pero INF, -INF no son nulos
        (nueva manera).
Definición de llamada: pd.set_option(self, *args, **kwds)

Información de la versión anterior. Gran parte de esto ha quedado obsoleto.

Como mencionó @bmu , Pandas detecta automáticamente (de forma predeterminada) el tamaño del área de visualización, se utilizará una vista de resumen cuando una representación de objeto no cabe en la pantalla. Mencionaste cambiar el tamaño de la ventana IDLE, sin ningún efecto. Si lo hace, print df.describe().to_string()¿cabe en la ventana IDLE?

El tamaño del terminal está determinado por pandas.util.terminal.get_terminal_size()(obsoleto y eliminado), esto devuelve una tupla que contiene el (width, height)de la pantalla. ¿La salida coincide con el tamaño de su ventana IDLE? Puede haber un problema (hubo uno antes al ejecutar una terminal en Emacs).

Tenga en cuenta que es posible omitir la detección automática; pandas.set_printoptions(max_rows=200, max_columns=10)nunca cambiará a la vista de resumen si el número de filas y columnas no excede los límites dados.


La opción 'max_colwidth' ayuda a ver la forma no truncada de cada columna.

Visualización de columnas truncadas

Wouter Overmeire avatar Jul 29 '2012 18:07 Wouter Overmeire

Prueba esto:

pd.set_option('display.expand_frame_repr', False)

De la documentación:

display.expand_frame_repr: booleano

Ya sea para imprimir la representación completa de DataFrame para DataFrames anchos en varias líneas, aún se respeta max_columns, pero la salida abarcará varias "páginas" si su ancho excede display.width. [predeterminado: Verdadero] [actualmente: Verdadero]

Ver: pandas.set_option .

Robert Rose avatar Aug 20 '2014 22:08 Robert Rose

Si desea configurar opciones temporalmente para mostrar un DataFrame grande, puede usar option_context :

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

Los valores de las opciones se restauran automáticamente cuando sales del withbloque.

jezrael avatar Oct 27 '2015 18:10 jezrael