Ich arbeite viel mit Serien und Datenrahmen auf dem Terminal. Der Standardwert __repr__
für eine Serie gibt eine reduzierte Stichprobe mit einigen Head- und Tail-Werten zurück, der Rest fehlt jedoch.
Gibt es eine integrierte Möglichkeit, die gesamte Serie/den gesamten DataFrame hübsch zu drucken? Im Idealfall würde dies eine ordnungsgemäße Ausrichtung, möglicherweise Ränder zwischen Spalten und möglicherweise sogar eine Farbcodierung für die verschiedenen Spalten unterstützen.
Sie können auch option_context
mit einer oder mehreren Optionen verwenden:
_with pd.option_context('display.max_rows', None, 'display.max_columns', None): # more options can be specified also
print(df)
_
Dadurch werden die Optionen automatisch auf ihre vorherigen Werte zurückgesetzt.
Wenn Sie mit jupyter-notebook arbeiten und display(df)
anstelle von print(df)
verwenden, wird die Anzeigelogik für jupyter-rich verwendet (wie so) .
Keine Notwendigkeit, Einstellungen zu hacken. Es gibt einen einfachen Weg:
print(df.to_string())
Klar, wenn das viel auftaucht, mache eine Funktion wie diese. Sie können es sogar so konfigurieren, dass es bei jedem Start von IPython geladen wird: https://ipython.org/ipython-doc/1/config/overview.html
def print_full(x):
pd.set_option('display.max_rows', len(x))
print(x)
pd.reset_option('display.max_rows')
Was das Ausmalen angeht, klingt es für mich kontraproduktiv, mit Farben zu arbeiten, aber ich bin damit einverstanden, dass bootstraps .table-striped
nett wäre. Sie können jederzeit ein Problem erstellen diese Funktion vorschlagen.
Legen Sie nach dem Importieren von Pandas als Alternative zur Verwendung des Kontextmanagers die folgenden Optionen fest, um ganze Datenrahmen anzuzeigen:
pd.set_option('display.max_columns', None) # or 1000
pd.set_option('display.max_rows', None) # or 1000
pd.set_option('display.max_colwidth', -1) # or 199
Eine vollständige Liste nützlicher Optionen finden Sie unter:
pd.describe_option('display')
Verwenden Sie das Paket tabulate:
pip install tabulate
Und betrachten Sie die folgende Beispielverwendung:
import pandas as pd
from io import StringIO
from tabulate import tabulate
c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""
df = pd.read_table(StringIO(c), sep="\s+", header=0)
print(tabulate(df, headers='keys', tablefmt='psql'))
+----+--------------+---------+-------+
| | Chromosome | Start | End |
|----+--------------+---------+-------|
| 0 | chr1 | 3 | 6 |
| 1 | chr1 | 5 | 7 |
| 2 | chr1 | 8 | 9 |
+----+--------------+---------+-------+
Wenn Sie Ipython Notebook (Jupyter) verwenden. Sie können HTML verwenden
from IPython.core.display import HTML
display(HTML(df.to_html()))
Versuche dies
pd.set_option('display.height',1000)
pd.set_option('display.max_rows',500)
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
Diese Antwort ist eine Variation des vorherigen Antwort von lucidyan . Es macht den Code lesbarer, indem die Verwendung von set_option
vermieden wird.
Legen Sie nach dem Importieren von Pandas als Alternative zur Verwendung des Kontextmanagers die folgenden Optionen fest, um große Datenrahmen anzuzeigen:
def set_pandas_options() -> None:
pd.options.display.max_columns = 1000
pd.options.display.max_rows = 1000
pd.options.display.max_colwidth = 199
pd.options.display.width = None
# pd.options.display.precision = 2 # set as needed
set_pandas_options()
Danach können Sie display(df)
oder nur df
verwenden, wenn Sie ein Notebook verwenden, andernfalls print(df)
.
Sie können dies mit der folgenden Methode erreichen. Übergeben Sie einfach die Gesamtzahl. von Spalten, die im DataFrame als Argument für vorhanden sind
'display.max_columns'
Zum Beispiel:
df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
print(df)