Często pracuję z Series i DataFrames na terminalu. Wartość domyślna __repr__
dla Serii zwraca zredukowaną próbkę, z pewnymi wartościami głowy i ogona, ale reszty brakuje.
Czy istnieje wbudowany sposób na ładne wydrukowanie całej Series / DataFrame? Idealnie byłoby wspierać prawidłowe wyrównanie, być może granice między kolumnami, a może nawet kodowanie kolorami dla różnych kolumn.
pd.set_option('display.max_rows', 1000)
na przykład, kolorowanie to coś innego, zakładam, że mówisz o kolorowaniu wyjściowego formatu HTML. Nie sądzę, żeby to było w ogóle wbudowane.display.max_rows
, problem polega na tym, że przez większość czasu chcę, aby dane wyjściowe były obcinane. Tylko od czasu do czasu chcę zobaczyć pełną wydajność. Mógłbym ustawić tę opcję na bardzo wysoką wartość, użyć wartości domyślnej__repr__
, a następnie cofnąć wartość, ale wydaje się to trochę kłopotliwe i równie dobrze mogę w tym przypadku napisać własną funkcję ładnego drukowania.set_option
które obsługują kolorowanie, być może jest to coś, co można zrobić jako wtyczkę, aby zastosować css lub formatowanie wyjściowe. To jedyny sposób, w jaki myślę, że możesz to osiągnąćOdpowiedzi:
Możesz także użyć opcji
option_context
, z jedną lub więcej opcji:Spowoduje to automatyczne przywrócenie opcji do ich poprzednich wartości.
Jeśli pracujesz na jupyter-notebook, użycie
display(df)
zamiastprint(df)
spowoduje użycie logiki wyświetlania bogatej w jupyter (podobnie jak) .źródło
None
powoduje ich wyłączenie. Korzystanie zwith pd.option_context()
dokumentów opcji, co dzieje się bardzo jasno i wyraźnie, i wyjaśnia, w jaki sposób osiągnąć inne zmiany formatowania wyjścia, które mogą być potrzebne, stosując npprecision
,max_colwidth
,expand_frame_repr
,colheader_justify
,date_yearfirst
,encoding
, i wiele wiele więcej: pandas.pydata.org/pandas -docs / stable / options.htmldisplay(df)
zamiastprint(df)
Nie trzeba hakować ustawień. Istnieje prosty sposób:
źródło
with pd.option_context()
dokumentów opcji, co dzieje się dużo bardziej jasno i wyraźnie, i wyjaśnia, w jaki sposób osiągnąć inne zmiany formatowania wyjścia, które mogą być potrzebne, za pomocą npprecision
,max_colwidth
,expand_frame_repr
,colheader_justify
,date_yearfirst
,encoding
, i wiele wiele więcej: pandas.pydata.org/ pandas-docs / stable / options.htmlpd.set_option('display.max_rows', None)
tuż przed drukowaniemdf
.Jasne, jeśli to się często pojawia, utwórz taką funkcję. Możesz go nawet skonfigurować tak, aby ładował się przy każdym uruchomieniu IPython: https://ipython.org/ipython-doc/1/config/overview.html
Jeśli chodzi o kolorowanie, zbyt rozbudowane kolory brzmią dla mnie bezproduktywnie, ale zgadzam się, że coś w stylu bootstrapu
.table-striped
byłoby fajne. Zawsze możesz utworzyć problem, aby zasugerować tę funkcję.źródło
Po zaimportowaniu pand jako alternatywy dla korzystania z menedżera kontekstu ustaw takie opcje wyświetlania całych ramek danych:
Aby uzyskać pełną listę przydatnych opcji, zobacz:
źródło
-1
wartości int zamiastNone
, jeśli chcesz uzyskać pełną reprezentacjędisplay.
w nazwie opcji nie wydaje się konieczny. Na przykładset_option('max_columns')
działa równie dobrze.Skorzystaj z pakietu tabelarycznego:
I rozważ następujący przykład użycia:
źródło
pd_series.to_frame()
Jeśli używasz Ipython Notebook (Jupyter). Możesz użyć HTML
źródło
Za pomocą
pd.options.display
Ta odpowiedź jest odmianą wcześniejszej odpowiedzi Lucidyana . Sprawia, że kod jest bardziej czytelny dzięki unikaniu użycia
set_option
.Po zaimportowaniu pand jako alternatywy dla korzystania z menedżera kontekstu ustaw takie opcje wyświetlania dużych ramek danych:
Następnie możesz użyć jednego
display(df)
lub tylkodf
jednego notebooka, w przeciwnym razieprint(df)
.Za pomocą
to_string
Panda 0.25.3 ma
DataFrame.to_string
iSeries.to_string
metody, które akceptują opcje formatowania.Za pomocą
to_markdown
Jeśli potrzebujesz wyników wyprzedaży, Pandas 1.0.0 ma
DataFrame.to_markdown
iSeries.to_markdown
metody.Za pomocą
to_html
Jeśli potrzebujesz danych wyjściowych HTML, Pandas 0.25.3 ma
DataFrame.to_html
metodę, ale nieSeries.to_html
. Zauważ, że aSeries
można przekształcić w aDataFrame
.źródło
Spróbuj tego
źródło
Możesz to osiągnąć za pomocą poniższej metody. wystarczy przekazać łączną liczbę nie. kolumn obecnych w DataFrame jako arg
Na przykład:
źródło
Spróbuj użyć funkcji display (). Spowodowałoby to automatyczne użycie poziomych i pionowych pasków przewijania, dzięki czemu można łatwo wyświetlać różne zestawy danych zamiast drukowania ().
display () obsługuje również prawidłowe wyrównanie.
Jeśli jednak chcesz, aby zestaw danych był piękniejszy, możesz to sprawdzić
pd.option_context()
. Ma wiele opcji, aby wyraźnie pokazać ramkę danych.Uwaga - używam notesów Jupyter.
źródło