966 Stimmen

Wie kann ich die Ausgabeanzeige erweitern, um mehr Spalten eines Pandas DataFrame zu sehen?

Gibt es eine Möglichkeit, die Anzeige der Ausgabe im interaktiven Modus oder im Skript-Ausführungsmodus zu erweitern?

Konkret verwende ich die describe() Funktion auf eine Pandas DataFrame . Wenn die DataFrame fünf Spalten (Labels) breit ist, erhalte ich die gewünschte deskriptive Statistik. Wenn jedoch die DataFrame mehr Spalten hat, werden die Statistiken unterdrückt und es wird etwas wie dieses zurückgegeben:

>> 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

Der Wert "8" wird unabhängig davon angegeben, ob es 6 oder 7 Spalten gibt. Worauf bezieht sich die "8"?

Ich habe bereits versucht, die IDLE Fenster vergrößert und die Breite der "Configure IDLE"-Optionen erhöht, ohne Erfolg.

19voto

Amila Viraj Punkte 944

Sie können einfach die folgenden Schritte ausführen,

  • Sie können die Optionen für die Pandas ändern max_spalten Funktion wie folgt:

    import pandas as pd
    pd.options.display.max_columns = 10

    (Damit können 10 Spalten angezeigt werden, und Sie können diese Zahl nach Bedarf ändern).

  • Auf diese Weise können Sie die Anzahl der anzuzeigenden Zeilen wie folgt ändern (wenn Sie auch die maximale Anzahl der Zeilen ändern müssen):

    pd.options.display.max_rows = 999

    (Damit können 999 Zeilen auf einmal gedruckt werden.)

Bitte beachten Sie die Dokumentation um verschiedene Optionen/Einstellungen für Pandas zu ändern.

14voto

hamx0r Punkte 3491

Nach Angaben der Dokumentation für v0.18.0 Wenn Sie in einem Terminal arbeiten (d. h. nicht IPython Notizbuch, qtconsole oder IDLE ), kann Pandas die Bildschirmbreite automatisch erkennen und die Anzahl der angezeigten Spalten im Handumdrehen anpassen:

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

11voto

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 consisting 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]))

Ausgabe:

   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

11voto

serv-inc Punkte 32204

Es scheint, als ob alle bisherigen Antworten das Problem lösen. Ein weiterer Punkt: Anstelle von pd.set_option('option_name') können Sie die (automatisch vervollständigbare) verwenden:

pd.options.display.width = None

Voir Pandas Dokumentation: Optionen und Einstellungen :

Die Optionen haben einen vollständigen Namen, bei dem die Groß- und Kleinschreibung keine Rolle spielt (z. B. "dotted-style"). display.max_rows ). Sie können die Optionen direkt als Attribute der der obersten Ebene options Attribut:

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

[...]

Für die max_... Parameter:

max_rows y max_columns werden verwendet in __repr__() Methoden zu entscheiden, ob to_string() o info() wird verwendet, um ein Objekt in eine Zeichenkette umzuwandeln. Für den Fall, dass Python/ IPython in einem Terminal ausgeführt wird, kann dies auf 0 gesetzt werden und Pandas erkennt automatisch die Breite des Terminals und wechselt zu einem kleineren Format, falls nicht alle Spalten vertikal passen. Das IPython-Notebook, IPython qtconsole oder IDLE laufen nicht in einem Terminal und daher ist es nicht möglich, eine korrekte automatische Erkennung durchzuführen. ' None Wert bedeutet unbegrenzt. [Hervorhebung nicht im Original]

Für die width Parameter:

Breite der Anzeige in Zeichen. Für den Fall, dass Python/IPython in einem Terminal läuft, kann dies eingestellt werden auf None und Pandas erkennt die Breite automatisch korrekt. Beachten Sie, dass das IPython-Notebook, die IPython qtconsole oder IDLE laufen nicht in einem Terminal und daher ist es nicht möglich, die Breite korrekt zu ermitteln.

8voto

loving_guy Punkte 379

Sie können diese benutzerdefinierte Funktion für die Anzeige von Dingen für einen Pandas verwenden Dataframe .

def display_all(df):     # For any Dataframe df
   with pd.option_context('display.max_rows',1000): # Change number of rows accordingly
      with pd.option_context('display.max_columns',1000): # Change number of columns accordingly
          display(df)

display_all(df.head()) # Pass this function to your dataframe and voilà!

Sie müssen nicht die pd.set_option für das gesamte Notebook nur für eine einzelne Zelle zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X