Panda: impostazione n. di file max


138

Ho un problema con la visualizzazione di quanto segue DataFrame:

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

Il problema è che non stampa tutte le righe per impostazione predefinita nel notebook ipython, ma devo tagliare per visualizzare le righe risultanti. Anche la seguente opzione non modifica l'output:

pd.set_option('display.max_rows', 500)

Qualcuno sa come visualizzare l'intero array?


Quando eseguo il tuo codice in un notebook predefinito (cioè senza un profilo di configurazione speciale), ottengo una tabella piuttosto stampata che è scorrevole con tutti i valori. Cordiali saluti, i miei panda .__ versione__ = 0.9.1 (non sono sicuro che sia importante)
BubbleGuppies

Intendevo shell normale, non ipython
Ryan Saxe,

Ho la sensazione che questo potrebbe essere un bug in 0.11 + ...
Andy Hayden,

Ciao Andy. Questo è già stato confermato da Wes? Dove posso presentare questo bug? C'è una soluzione?
Andy,

L'ho appena archiviato qui , so che ci sono state alcune modifiche dell'ultimo minuto in 0.11 al repr DataFrame, quindi ho compilato quelle nella segnalazione bug. Ti informerà della soluzione alternativa.
Andy Hayden,

Risposte:


233

Impostare display.max_rows:

pd.set_option('display.max_rows', 500)

Per le versioni precedenti di Panda (<= 0.11.0) è necessario modificare sia display.heighte display.max_rows.

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

Vedi anche pd.describe_option('display').

Puoi impostare un'opzione solo temporaneamente per questa volta in questo modo:

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

Puoi anche ripristinare un'opzione al suo valore predefinito come questo:

pd.reset_option('display.max_rows')

E ripristinarli tutti indietro:

pd.reset_option('all')


6
+1 per pd.describe_option ('display'), non conoscevo tutte le opzioni
nom-mon-ir

41
L'altezza è ora obsoleta, quindi l'opzione display.max_rows è sufficiente.
Hanleyhansen,

9
Per chiunque guardi solo la risposta accettata: usare with pd.option_context('display.height', 500, 'display.max_rows', 500):per impostarle solo temporaneamente.
BallpointBen,

Dovrei correggere o dare il modo migliore per raggiungere questo obiettivo. Usa None e non limitarti a 500. #Temporary mostra tutte le righe e le colonne con pd.option_context ('display.max_rows', None, 'display.max_columns', None): display (df_facilities) Il codice sopra avrà effetto solo nella cella contenente il codice, quindi non è necessario reimpostare in altre celle.
MGB.py

35

Personalmente, mi piace impostare le opzioni direttamente con un'istruzione di assegnazione in quanto è facile da trovare tramite il completamento della scheda grazie a iPython. Trovo difficile ricordare quali siano esattamente i nomi delle opzioni, quindi questo metodo funziona per me.

Ad esempio, tutto ciò che devo ricordare è che inizia con pd.options

pd.options.<TAB>

inserisci qui la descrizione dell'immagine

La maggior parte delle opzioni sono disponibili sotto display

pd.options.display.<TAB>

inserisci qui la descrizione dell'immagine

Da qui, di solito output qual è il valore corrente in questo modo:

pd.options.display.max_rows
60

L'ho quindi impostato su quello che voglio che sia:

pd.options.display.max_rows = 100

Inoltre, dovresti essere consapevole del gestore del contesto per le opzioni, che imposta temporaneamente le opzioni all'interno di un blocco di codice. Passa il nome dell'opzione come stringa seguita dal valore che desideri che sia. È possibile passare un numero qualsiasi di opzioni nella stessa riga:

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

Puoi anche ripristinare un'opzione al suo valore predefinito come questo:

pd.reset_option('display.max_rows')

E ripristinarli tutti indietro:

pd.reset_option('all')

È comunque perfettamente corretto impostare le opzioni tramite pd.set_option. Trovo solo che usare gli attributi direttamente sia più semplice e ci sia meno bisogno di get_optione set_option.


4
with pd.option_contextè il metodo più pulito tra queste risposte; minimi effetti collaterali.
ijoseph,

10

Era già stato sottolineato in questo commento e in questa risposta , ma cercherò di dare una risposta più diretta alla domanda:

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_context è disponibile da Panda 0.13.1 ( note di rilascio di Panda 0.13.1 ). Secondo questo ,

[it] consente a [s] di eseguire un blocco di codice con una serie di opzioni che tornano alle impostazioni precedenti quando si esce dal blocco with.


9

Come notato da @hanleyhansen in un commento, a partire dalla versione 0.18.1, l' display.heightopzione è obsoleta e dice "usa display.max_rowsinvece". Quindi devi solo configurarlo in questo modo:

pd.set_option('display.max_rows', 500)

Vedere le note sulla versione - documentazione di Panda 0.18.1 :

Display.height obsoleto, display.width ora è solo un'opzione di formattazione che non controlla l'attivazione del riepilogo, simile a <0.11.0.


7
pd.set_option('display.max_rows', 500)
df

Non funziona in Jupyter!
Invece usa:

pd.set_option('display.max_rows', 500)
df.head(500)

3

Come in questa risposta a una domanda simile , non è necessario modificare le impostazioni. È molto più semplice scrivere:

print(foo.to_string())

1
Non dovresti convertirlo in stringa. Non è quello che Andy ha chiesto.
simtim

1
@simtim Andy ha chiesto come "visualizzare l'intero array". Questo lo farà ed è molto più semplice della risposta accettata.
Ninjakannon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.