2012-07-06 2 views
68

Ho un file csv con il nome params.csv. Ho aperto ipython qtconsole e creato un panda dataframe utilizzando:Dati di output da tutte le colonne in un dataframe nei panda

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

dove, paramnames è un elenco di pitone di oggetti stringa. Esempio di paramnames (la lunghezza della lista attuale è 22):

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

Alla richiesta ipython se di tipo paramdata e premere INVIO quindi non ottengo il dataframe con colonne e valori come mostrato negli esempi su Pandas website. Invece, ricevo informazioni sul dataframe. Ottengo:

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 

Se scriv paramdata['mc'] poi faccio ottenere i valori come previsto per la colonna mc. Ho due domande:

(1) Negli esempi sul sito Web di panda (vedere, ad esempio, l'output di df qui: http://pandas.sourceforge.net/indexing.html#additional-column-access) digitando il nome del dataframe vengono forniti i dati effettivi. Perché ricevo informazioni sul dataframe come mostrato sopra invece dei dati effettivi? Devo impostare alcune opzioni di output da qualche parte?

(2) Come faccio a trasmettere tutte le colonne del dataframe sullo schermo senza dover digitare i loro nomi, vale a dire, senza dover digitare qualcosa come paramdata[['id','fc','mc']].

Sto usando la versione 0.8 di panda.

Grazie.

+0

Quasi duplicati di http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

risposta

35

C'è troppi dati da visualizzare sullo schermo, pertanto viene visualizzato un riepilogo.

Se si vuole l'output dei dati in ogni caso (non sarà probabilmente in forma su uno schermo e non sembra molto bene):

print paramdata.values 

converte il dataframe alla sua rappresentazione matriciale NumPy-array.

paramdata.columns 

memorizza i rispettivi nomi di colonna e

paramdata.index 

memorizza il rispettivo indice (nomi di riga).

+17

-1 come penso che "set_printoptions" dovrebbe essere menzionato. 'paramdata.values' non è una buona soluzione, perché probabilmente' numpy' non mostrerà tutto (a seconda delle dimensioni) e le informazioni sull'indice andranno perse. – bmu

9

è inoltre possibile utilizzare DataFrame.head(x)/.tail(x) per visualizzare le prime/ultime x righe di DataFrame.

0

è possibile utilizzare la sequenza affettare sintassi cioè

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

a volte il dataframe potrebbe non andare bene nel buffer dello schermo, nel qual caso si sono probabilmente meglio sia la stampa di un piccolo sottoinsieme o esportarlo in qualcosa d'altro, trama o (cSV di nuovo)

165

Usa:

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

Questo costringerà Panda per visualizzare i 7 colonne che avete.O più in generale:

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

che lo obbligherà a visualizzare un numero qualsiasi di colonne.

Spiegazione: il valore predefinito per max_columns è 0, che indica a Pandas di visualizzare la tabella solo se tutte le colonne possono essere spremute nella larghezza della console.

+2

set_option sembra essere nuovo, forse dalla versione 0.13? Per le versioni precedenti prova ad es. pd.set_printoptions (max_columns = 7) Vedi http://stackoverflow.com/questions/11707586/python-pandas-widen-output-display – nealmcb

+6

Questa dovrebbe essere la risposta accettata .... –

21

So che questa è una domanda vecchia, ma ho appena avuto un problema simile e penso che quello che ho fatto avrebbe funzionato anche per te.

ho usato il metodo to_csv() e ha scritto sullo standard output:

import sys 

paramdata.to_csv(sys.stdout) 

Questo dovrebbe scaricare l'intero dataframe se è ben-printable o no, ed è possibile utilizzare i parametri to_csv per configurare i separatori delle colonne, se l'indice viene stampato, ecc

13

In ipython, io lo uso per stampare una parte del dataframe che funziona abbastanza bene (stampa i primi 100 righe):

print paramdata.head(100).to_string()