python - tablas - Datos de salida de todas las columnas en un marco de datos en pandas
recorrer data frame pandas (6)
Tengo un archivo csv con el nombre params.csv
. Abrí ipython qtconsole
y creé un dataframe
pandas usando:
import pandas
paramdata = pandas.read_csv(''params.csv'', names=paramnames)
donde, paramnames
es una lista de Python de objetos de cadena. Ejemplo de paramnames
(la longitud de la lista real es 22):
paramnames = ["id",
"fc",
"mc",
"markup",
"asplevel",
"aspreview",
"reviewpd"]
En el prompt de ipython si paramdata
y paramdata
enter, entonces no obtengo el marco de datos con columnas y valores como se muestra en los ejemplos en el sitio web de Pandas . En cambio, obtengo información sobre el marco de datos. Yo obtengo:
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 paramdata[''mc'']
, obtengo los valores esperados para la columna mc
. Tengo dos preguntas:
(1) En los ejemplos en el sitio web de pandas (ver, por ejemplo, el resultado de df
aquí: http://pandas.sourceforge.net/indexing.html#additional-column-access ) escribiendo el nombre del marco de datos da el Información actual. ¿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 envío 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.
En ipython
, uso esto para imprimir una parte del dataframe que funciona bastante bien (imprime las primeras 100 filas):
print paramdata.head(100).to_string()
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 (probablemente no se ajusta a una pantalla y no se ve muy bien):
print paramdata.values
convierte el marco de datos a su representación matricial numpy-array.
paramdata.columns
almacena los nombres de columna respectivos y
paramdata.index
almacena el índice respectivo (nombres de fila).
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 ti.
Usé el método to_csv () y escribí a stdout:
import sys
paramdata.to_csv(sys.stdout)
Esto debería volcar todo el marco de datos, ya sea que esté bien imprimible o no, y puede usar los parámetros to_csv para configurar los separadores de columnas, si el índice está impreso, etc.
Utilizar:
pandas.set_option(''display.max_columns'', 7)
Esto obligará a Pandas a mostrar las 7 columnas que tienes. O más en general:
pandas.set_option(''display.max_columns'', None)
lo que lo 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.
puede usar la sintaxis de corte de secuencia, es decir,
paramdata[:5] # first five records
paramdata[-5:] # last five records
paramdata[:] # all records
a veces el marco de datos puede no ajustarse en el búfer de la pantalla, en cuyo caso es mejor que imprima un pequeño subconjunto o que lo exporte a otra cosa, trazar o (csv nuevamente)
también puede usar DataFrame.head(x)
/ .tail(x)
para mostrar la primera / última x filas del DataFrame.