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.

0voto

Al-Baraa El-Hag Punkte 701

Keine dieser Antworten hat bei mir funktioniert. Bei einigen von ihnen wurden zwar alle Spalten gedruckt, aber es sah schlampig aus. Es waren zwar alle Informationen vorhanden, aber sie waren nicht richtig formatiert. Ich verwende ein Terminal innerhalb von Neovim Daher vermute ich, dass dies der Grund ist.

Diese Minifunktion tut genau das, was ich brauche, ändern Sie einfach df_data an den beiden Stellen, an denen der Name Ihres Datenrahmens steht ( col_range ist auf den Wert eingestellt, den Pandas von Natur aus anzeigt (bei mir ist es 5, aber bei Ihnen könnte es größer oder kleiner sein).

import math
col_range = 5
for _ in range(int(math.ceil(len(df_data.columns)/col_range))):
    idx1 = _*col_range
    idx2 = idx1+col_range
    print(df_data.iloc[:, idx1:idx2].describe())

0voto

Peruz Punkte 363

Das ist streng genommen nicht die Antwort, aber wir sollten uns daran erinnern, dass wir df.describe().transpose() oder sogar df.head(n).transpose() ou df.tail(n).transpose() .

Ich finde es auch einfacher, Überschriften als Spalte zu lesen, wenn sie strukturiert sind:

header1_xxx,

header2_xxx,

header3_xxx,

Ich denke, dass Terminals und Anwendungen das vertikale Scrollen natürlicher handhaben, wenn dies nach dem Umsetzen notwendig ist.

Kopfzeilen sind in der Regel größer als ihre Werte, und da sie alle in einer Spalte (Index) untergebracht sind, werden ihre Auswirkungen auf die Gesamtbreite der Tabelle minimiert.

Schließlich können auch andere df-Beschreibungen zusammengeführt werden, hier ist eine mögliche Idee:

def df_overview(df: pd.DataFrame, max_colwidth=25, head=3, tail=3):
    return(
        df.describe([0.5]).transpose()
        .merge(df.dtypes.rename('dtypes'), left_index=True, right_index=True)
        .merge(df.head(head).transpose(), left_index=True, right_index=True)
        .merge(df.tail(tail).transpose(), left_index=True, right_index=True)
        .to_string(max_colwidth=max_colwidth, float_format=lambda x: "{:.4G}".format(x))
    )

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