2012-07-06 19 views
68

Tengo un archivo csv con el nombre params.csv. Abrí ipython qtconsole y creé un pandas dataframe usando:Datos de salida de todas las columnas en un marco de datos en pandas

import pandas 
paramdata = pandas.read_csv('params.csv', names=paramnames) 

donde, paramnames es una lista de objetos de cadena pitón. Ejemplo de paramnames (la longitud de la lista actual es 22):

paramnames = ["id", 
"fc", 
"mc", 
"markup", 
"asplevel", 
"aspreview", 
"reviewpd"] 

En el símbolo ipython si escribo paramdata y pulse ENTER entonces no consigo la trama de datos con las columnas y los valores como se muestra en los ejemplos en Pandas website. En cambio, obtengo información sobre el marco de datos. Me sale:

In[35]: paramdata 
Out[35]: 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 59 entries, 0 to 58 
Data columns: 
id     59 non-null values 
fc     59 non-null values 
mc     59 non-null values 
markup    59 non-null values 
asplevel    59 non-null values 
aspreview    59 non-null values 
reviewpd    59 non-null values 

Si escribo paramdata['mc'] entonces me pongo los valores como se espera para la columna de mc. Tengo dos preguntas:

(1) En los ejemplos en el sitio web de los pandas (ver, por ejemplo, la salida de df aquí: http://pandas.sourceforge.net/indexing.html#additional-column-access) escribiendo el nombre del dataframe da los datos reales. ¿Por qué recibo información sobre el marco de datos como se muestra arriba en lugar de los datos reales? ¿Debo configurar algunas opciones de salida en alguna parte?

(2) ¿Cómo puedo enviar todas las columnas en el marco de datos a la pantalla sin tener que escribir sus nombres, es decir, sin tener que escribir algo como paramdata[['id','fc','mc']].

Estoy usando pandas versión 0.8.

Gracias.

+0

Casi duplicado de http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

Respuesta

35

Hay demasiados datos para mostrar en la pantalla, por lo tanto, se muestra un resumen en su lugar.

Si desea dar salida a los datos de todos modos (que probablemente no caben en una pantalla y no se ve muy bien):

print paramdata.values 

convierte la trama de datos a su representación matricial numpy-matriz.

paramdata.columns 

almacena los nombres de las columnas respectivas y

paramdata.index 

almacena el índice respectivo (nombres de las filas).

+17

-1, ya que creo que debe mencionarse 'set_printoptions'. 'paramdata.values' no es una buena solución, porque probablemente' numpy' no se muestre todo (dependiendo del tamaño) y la información del índice se perderá. – bmu

9

También puede usar DataFrame.head(x)/.tail(x) para mostrar las primeras/últimas x filas del DataFrame.

0

puede utilizar secuencia de corte de la sintaxis es decir

paramdata[:5] # first five records 
paramdata[-5:] # last five records 
paramdata[:] # all records 

veces la trama de datos podría no caber en el búfer de pantalla en cuyo caso es probablemente mejor sea la impresión de un pequeño subconjunto o exportarlo a otra cosa, trama o (cSV de nuevo)

165

uso:

pandas.set_option('display.max_columns', 7) 

Esto obligará a las pandas para mostrar las 7 columnas que tiene.O más en general:

pandas.set_option('display.max_columns', None) 

que le obligará a mostrar cualquier cantidad de columnas.

Explicación: el valor predeterminado para max_columns es 0, que le indica a Pandas que muestre la tabla solo si todas las columnas se pueden comprimir en el ancho de la consola.

+2

set_option parece ser nuevo, ¿quizás de la versión 0.13? Para versiones anteriores, pruebe, p. pd.set_printoptions (max_columns = 7) Consulte http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

+6

Esta debería haber sido la respuesta aceptada .... –

21

Sé que esta es una vieja pregunta, pero acabo de tener un problema similar y creo que lo que hice también funcionaría para usted.

utilicé el método to_csv() y escribió a la salida estándar:

import sys 

paramdata.to_csv(sys.stdout) 

Esto debería volcar toda la trama de datos si es bien imprimible o no, y se puede utilizar los parámetros to_csv para configurar separadores de columna, si el índice se imprime, etc.

13

En ipython, lo utilizo para imprimir una parte de la trama de datos que funciona bastante bien (imprime las primeras 100 filas):

print paramdata.head(100).to_string() 
Cuestiones relacionadas