¿Cómo amplío la pantalla de salida para ver más columnas?

¿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 función describe () en un dataframe Pandas. Cuando el dataframe tiene 5 columnas (tags) de ancho, obtengo las estadísticas descriptivas que deseo. Sin embargo, si el dataframe tiene 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 da si hay 6 o 7 columnas. ¿A qué se refiere el “8”?

Ya he intentado arrastrar la ventana IDLE más grande, así como el aumento de las opciones de ancho “Configurar IDLE”, en vano.

Mi propósito al usar Pandas y describe () es evitar usar un segundo progtwig como STATA para realizar una investigación y manipulación de datos básicos.

Python / IDLE 2.7.3
Pandas 0.8.1
Notepad ++ 6.1.4 (UNICODE)
Windows Vista SP2

Como mencionó @bmu, los pandas detectan automáticamente (de manera predeterminada) el tamaño del área de visualización, se usará una vista de resumen cuando la reproducción de un objeto no cabe en la visualización. Usted mencionó cambiar el tamaño de la ventana IDLE, sin efecto. Si print df.describe().to_string() ¿cabe en la ventana IDLE?

El tamaño del terminal está determinado por pandas.util.terminal.get_terminal_size() , 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 un 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 vista de resumen si el número de filas, las columnas no excede los límites dados.


Actualización: Pandas 0.23.4 en adelante

pandas.set_printoptions(...) está en desuso. En su lugar, utilice pandas.set_option . Me gusta:

 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 para set_option :

 set_option (pat, valor): establece el valor de la opción especificada

 Opciones Disponibles:
 mostrar. [chop_threshold, colheader_justify, column_space, date_dayfirst,
          date_yearfirst, encoding, expand_frame_repr, float_format, height,
          line_width, max_columns, max_colwidth, max_info_columns, max_info_rows,
          max_rows, max_seq_items, mpl_style, multi_sparse, notebook_repr_html,
          pprint_nest_depth, precisión, ancho]
 mode. [sim_interactive, use_inf_as_null]

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

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

 valor - nuevo valor de opción.

 Devoluciones
 -------
 Ninguna

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

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

 display.date_dayfirst: [predeterminado: falso] [actualmente: falso]
 booleano
         Cuando sea verdadero, imprime y analiza las fechas con el primer día, 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, p. Ej., 2005/01/20
 display.encoding: [predeterminado: UTF-8] [actualmente: UTF-8]
 : str / unicode
         De forma predeterminada, la encoding detectada de la consola.
         Especifica la encoding que se utilizará para las cadenas devueltas por to_string,
         estas son generalmente cadenas destinadas a ser mostradas en la consola.
 display.expand_frame_repr: [por defecto: Verdadero] [actualmente: Verdadero]
 booleano
         Ya sea para imprimir la reproducción completa de DataFrame para DataFrames amplios
         a lo largo de múltiples líneas, `max_columns` todavía se respeta, pero la salida
         envuélvase en varias "páginas" si su ancho excede a `display.width`.
 display.float_format: [predeterminado: ninguno] [actualmente: ninguno]
 : callable
         El que llama debe aceptar un número de punto flotante y devolver
         una cadena con el formato deseado del número.  Esto es usado
         En algunos lugares como SeriesFormatter.
         Ver core.format.EngFormatter para 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: [por defecto: 20] [actualmente: 500]
 : En t
         max_rows y max_columns se usan 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 un terminal, esto se puede configurar en 0 y pandas
         detectará correctamente el ancho del terminal y cambiará a un más pequeño
         Formato en caso de que todas las columnas no se ajusten verticalmente.  El cuaderno de IPython,
         IPython qtconsole, o IDLE no se ejecuta en un terminal y por lo tanto no es
         posible hacer la 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 reproducción de
         Una estructura de datos pandas.  Cuando la columna se desborda, 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 usa en el método DataFrame.info para decidir si
         Se imprimirá información por columna.
 display.max_info_rows: [predeterminado: 1690785] [actualmente: 1690785]
 : int o None
         max_info_rows es el número máximo de filas para las que un marco
         realice una comprobación nula en sus columnas al volver a ejecutar En una consola.
         El valor predeterminado es 1.000.000 filas.  Por lo tanto, 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
         visualizar en una sesión interactiva.  Un valor de Ninguno significa siempre
         realizar una comprobación nula al repr'ing.
 display.max_rows: [predeterminado: 60] [actualmente: 500]
 : En t
         Esto establece el número máximo de filas que deben salir los pandas al imprimir
         fuera de varios resultados.  Por ejemplo, este valor determina si la repr ()
         para un dataframe se imprime completamente o solo un resumen repr.
         El valor 'Ninguno' significa ilimitado.
 display.max_seq_items: [predeterminado: ninguno] [actualmente: ninguno]
 : int o None

         cuando se imprime una secuencia larga, no más que `max_seq_items`
         será impreso  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]
 : bool

         Al establecer esto en 'predeterminado' se modificarán los rcParams utilizados por matplotlib
         Para dar a las plots un estilo visual más agradable por defecto.
         Al establecer esto en Ninguno / Falso, los valores se restauran a su valor inicial.
 display.multi_sparse: [predeterminado: verdadero] [actualmente: verdadero]
 booleano
         "Sparsify" pantalla MultiIndex (no mostrar repetida
         elementos en niveles externos dentro de grupos)
 display.notebook_repr_html: [predeterminado: verdadero] [actualmente: verdadero]
 booleano
         Cuando sea Verdadero, el cuaderno IPython utilizará la 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 nesteds para procesar cuando se imprime bastante
 display.precision: [por defecto: 7] [actualmente: 7]
 : En t
         Precisión de salida de punto 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 puede configurarse como Ninguno y los pandas detectarán automáticamente el
         anchura.
         Tenga en cuenta que el portátil IPython, IPython qtconsole o IDLE no se ejecutan en una
         Terminal y por lo tanto no es posible detectar correctamente el ancho.
 mode.sim_interactive: [predeterminado: False] [actualmente: False]
 booleano
         Si simular el modo interactivo para propósitos de prueba
 mode.use_inf_as_null: [predeterminado: falso] [actualmente: falso]
 booleano
         True significa tratar None, NaN, INF, -INF como null (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)

Prueba esto:

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

De la documentación:

display.expand_frame_repr: boolean

Si se imprime la reproducción completa de DataFrame para los DataFrames amplios en varias líneas, se respeta max_columns, pero la salida se envolverá en múltiples “páginas” si el ancho excede a display.width. [por defecto: Verdadero] [actualmente: verdadero]

Consulte: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html

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

 with pd.option_context('display.max_rows', -1, 'display.max_columns', 5): print df 

Los valores de las opciones se restauran automáticamente al salir del bloque with .

Establezca el ancho máximo de la columna usando:

 pd.set_option('max_colwidth', 800) 

Esta statement particular establece el ancho máximo a 800 px, por columna.

Solo utilizando estas 3 líneas funcionó para mí:

 pd.set_option('display.max_columns', None) pd.set_option('display.expand_frame_repr', False) pd.set_option('max_colwidth', -1) 

Anaconda / Python 3.6.5 / pandas: 0.23.0 / Visual Studio Code 1.26

Puedes ajustar las opciones de impresión de pandas con set_printoptions .

 In [3]: df.describe() Out[3]:  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 dtypes: float64(7) In [4]: pd.set_printoptions(precision=2) In [5]: df.describe() Out[5]: x1 x2 x3 x4 x5 x6 x7 count 8.0 8.0 8.0 8.0 8.0 8.0 8.0 mean 69024.5 69025.5 69026.5 69027.5 69028.5 69029.5 69030.5 std 17.1 17.1 17.1 17.1 17.1 17.1 17.1 min 69000.0 69001.0 69002.0 69003.0 69004.0 69005.0 69006.0 25% 69012.2 69013.2 69014.2 69015.2 69016.2 69017.2 69018.2 50% 69024.5 69025.5 69026.5 69027.5 69028.5 69029.5 69030.5 75% 69036.8 69037.8 69038.8 69039.8 69040.8 69041.8 69042.8 max 69049.0 69050.0 69051.0 69052.0 69053.0 69054.0 69055.0 

Sin embargo, esto no funcionará en todos los casos, ya que los pandas detectan el ancho de la consola y solo usarán to_string si la salida se ajusta a la consola (consulte la cadena de set_printoptions de set_printoptions ). En este caso, puede llamar explícitamente a to_string como lo responde BrenBarn .

Actualizar

Con la versión 0.10 se modificó la forma en que se imprimen los marcos de datos amplios

 In [3]: df.describe() Out[3]: x1 x2 x3 x4 x5 \ count 8.000000 8.000000 8.000000 8.000000 8.000000 mean 59832.361578 27356.711336 49317.281222 51214.837838 51254.839690 std 22600.723536 26867.192716 28071.737509 21012.422793 33831.515761 min 31906.695474 1648.359160 56.378115 16278.322271 43.745574 25% 45264.625201 12799.540572 41429.628749 40374.273582 29789.643875 50% 56340.214856 18666.456293 51995.661512 54894.562656 47667.684422 75% 75587.003417 31375.610322 61069.190523 67811.893435 76014.884048 max 98136.474782 84544.484627 91743.983895 75154.587156 99012.695717 x6 x7 count 8.000000 8.000000 mean 41863.000717 33950.235126 std 38709.468281 29075.745673 min 3590.990740 1833.464154 25% 15145.759625 6879.523949 50% 22139.243042 33706.029946 75% 72038.983496 51449.893980 max 98601.190488 83309.051963 

Además, la API para configurar las opciones de pandas cambió:

 In [4]: pd.set_option('display.precision', 2) In [5]: df.describe() Out[5]: x1 x2 x3 x4 x5 x6 x7 count 8.0 8.0 8.0 8.0 8.0 8.0 8.0 mean 59832.4 27356.7 49317.3 51214.8 51254.8 41863.0 33950.2 std 22600.7 26867.2 28071.7 21012.4 33831.5 38709.5 29075.7 min 31906.7 1648.4 56.4 16278.3 43.7 3591.0 1833.5 25% 45264.6 12799.5 41429.6 40374.3 29789.6 15145.8 6879.5 50% 56340.2 18666.5 51995.7 54894.6 47667.7 22139.2 33706.0 75% 75587.0 31375.6 61069.2 67811.9 76014.9 72039.0 51449.9 max 98136.5 84544.5 91744.0 75154.6 99012.7 98601.2 83309.1 

Puede configurar la pantalla de salida para que coincida con el ancho de su terminal actual:

 pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0]) 

Puede usar print df.describe().to_string() para forzar que muestre la tabla completa. (Puedes usar to_string() así para cualquier DataFrame. El resultado de describe es solo un DataFrame).

El 8 es el número de filas en el DataFrame que contiene la “descripción” (porque describe calcula 8 estadísticas, min, max, media, etc.).

De acuerdo con los documentos para v0.18.0 , si está ejecutando en un terminal (es decir, no en una notebook iPython, qtconsole o IDLE), es un sistema de 2 liners que Pandas detecta automáticamente el ancho de su pantalla y se adapta sobre la marcha con la cantidad de columnas que muestra:

 pd.set_option('display.large_repr', 'truncate') pd.set_option('display.max_columns', 0) 

Parece que todas las respuestas anteriores resuelven el problema. Un punto más: en lugar de pd.set_option('option_name') , puedes usar el (auto-completado-capaz)

 pd.options.display.width = None 

Ver Pandas doc: Opciones y Configuraciones:

Las opciones tienen un nombre completo “estilo de puntos” que no distingue entre mayúsculas y minúsculas (por ejemplo, display.max_rows ). Puede obtener / establecer opciones directamente como atributos del atributo de options nivel superior:

 In [1]: import pandas as pd In [2]: pd.options.display.max_rows Out[2]: 15 In [3]: pd.options.display.max_rows = 999 In [4]: pd.options.display.max_rows Out[4]: 999 

[…]

para el max_... params:

max_rows y max_columns se usan en los __repr__() para decidir si to_string() o info() se usan para representar un objeto en una cadena. En caso de que python / IPython se esté ejecutando en un terminal, esto se puede establecer en 0 y los pandas detectarán correctamente el ancho del terminal y cambiarán a un formato más pequeño en caso de que todas las columnas no se ajusten verticalmente. El portátil IPython, IPython qtconsole o IDLE no se ejecutan en un terminal y, por lo tanto, no es posible realizar la detección automática correcta. El valor ‘ None ‘ significa ilimitado. [énfasis no en original]

para el width param:

Ancho de la pantalla en caracteres. En caso de que python / IPython se esté ejecutando en un terminal, esto se puede establecer en None y los pandas detectarán automáticamente el ancho. Tenga en cuenta que el portátil IPython, IPython qtconsole o IDLE no se ejecutan en un terminal y, por lo tanto, no es posible detectar el ancho correctamente.

Utilicé estos ajustes cuando la escala de datos es alta.

 # environment settings: pd.set_option('display.max_column',None) pd.set_option('display.max_rows',None) pd.set_option('display.max_seq_items',None) pd.set_option('display.max_colwidth', 500) pd.set_option('expand_frame_repr', True) 

Puede consultar la documentación aquí.

 import pandas as pd pd.set_option('display.max_columns', 100) pd.set_option('display.width', 1000) SentenceA = "William likes Piano and Piano likes William" SentenceB = "Sara likes Guitar" SentenceC = "Mamoosh likes Piano" SentenceD = "William is a CS Student" SentenceE = "Sara is kind" SentenceF = "Mamoosh is kind" bowA = SentenceA.split(" ") bowB = SentenceB.split(" ") bowC = SentenceC.split(" ") bowD = SentenceD.split(" ") bowE = SentenceE.split(" ") bowF = SentenceF.split(" ") # Creating a set consisted of all words wordSet = set(bowA).union(set(bowB)).union(set(bowC)).union(set(bowD)).union(set(bowE)).union(set(bowF)) print("Set of all words is: ", wordSet) # Initiating dictionary with 0 value for all BOWs wordDictA = dict.fromkeys(wordSet, 0) wordDictB = dict.fromkeys(wordSet, 0) wordDictC = dict.fromkeys(wordSet, 0) wordDictD = dict.fromkeys(wordSet, 0) wordDictE = dict.fromkeys(wordSet, 0) wordDictF = dict.fromkeys(wordSet, 0) for word in bowA: wordDictA[word] += 1 for word in bowB: wordDictB[word] += 1 for word in bowC: wordDictC[word] += 1 for word in bowD: wordDictD[word] += 1 for word in bowE: wordDictE[word] += 1 for word in bowF: wordDictF[word] += 1 # Printing Term frequency print("SentenceA TF: ", wordDictA) print("SentenceB TF: ", wordDictB) print("SentenceC TF: ", wordDictC) print("SentenceD TF: ", wordDictD) print("SentenceE TF: ", wordDictE) print("SentenceF TF: ", wordDictF) print(pd.DataFrame([wordDictA, wordDictB, wordDictB, wordDictC, wordDictD, wordDictE, wordDictF])) 

Salida:

  CS Guitar Mamoosh Piano Sara Student William a and is kind likes 0 0 0 0 2 0 0 2 0 1 0 0 2 1 0 1 0 0 1 0 0 0 0 0 0 1 2 0 1 0 0 1 0 0 0 0 0 0 1 3 0 0 1 1 0 0 0 0 0 0 0 1 4 1 0 0 0 0 1 1 1 0 1 0 0 5 0 0 0 0 1 0 0 0 0 1 1 0 6 0 0 1 0 0 0 0 0 0 1 1 0 

Si no quiere meterse con sus opciones de visualización y solo quiere ver esta lista particular de columnas sin expandir cada dataframe que ve, puede intentar:

df.columns.values