Pretty-wydrukuj całą serię pand / DataFrame
Często pracuję z seriami i DataFrames na terminalu. Domyślna __repr__
dla serii zwraca zmniejszoną próbkę, z niektórymi wartościami głowy i ogona, ale pozostałych brakuje.
Czy istnieje wbudowany sposób, aby wydrukować całą serię / ramkę danych? Idealnie byłoby wspierać odpowiednie wyrównanie, być może granice między kolumnami, a może nawet kodowanie kolorami dla różnych kolumn.
9 answers
Możesz również użyć option_context
, z jedną lub kilkoma opcjami:
with pd.option_context('display.max_rows', None, 'display.max_columns', None):
print(df)
Spowoduje to automatyczne przywrócenie domyślnych wartości opcji.
Jeśli pracujesz na jupyter-notebook, za pomocą display
zamiast print
użyje jupyter rich display logic.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-20 19:08:58
Nie ma potrzeby hakowania ustawień. Jest prosty sposób:
print(df.to_string())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-07 18:45:36
Jasne, jeśli to się często pojawia, zrób funkcję taką jak ta. Możesz nawet skonfigurować go do ładowania za każdym razem, gdy uruchamiasz IPython: 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')
Co do kolorowania, zbyt wyszukane z kolorami brzmi dla mnie przeciwnieproduktywnie, ale Zgadzam się coś w stylu bootstrap ' s .table-striped
byłoby miło. Zawsze możesz utworzyć problem , Aby zasugerować tę funkcję.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-26 10:25:43
Po zaimportowaniu pand, jako alternatywę dla korzystania z menedżera kontekstu, Ustaw takie opcje do wyświetlania całych ramek danych:
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
Pełna lista przydatnych opcji znajduje się na stronie:
pd.describe_option('display')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-20 20:14:06
Użyj pakietu tabulate:
pip install tabulate
I rozważ następujący przykład użycia:
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 |
+----+--------------+---------+-------+
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-19 00:05:43
Jeśli używasz notebooka Ipython (Jupyter). Możesz użyć HTML
from IPython.core.display import HTML
display(HTML(df.to_html()))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-20 01:56:46
Spróbuj tego
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-07 02:21:52
Możesz to osiągnąć za pomocą poniższej metody. po prostu przekaż całkowitą nie. kolumny obecne w ramce danych jako arg do
'wyświetlacz.max_columns "
Dla NP:
df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
print(df)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-15 05:59:22
[[5]}ta odpowiedź jest odmianą wcześniejszej odpowiedzi autorstwa lucidyan . Sprawia, że kod jest bardziej czytelny, unikając użycia set_option
.
Po zaimportowaniu pand, jako alternatywę dla korzystania z menedżera kontekstu, Ustaw takie opcje do wyświetlania dużych ramek danych:
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()
Następnie możesz użyć display(df)
lub po prostu df
Jeśli używasz notatnika, w przeciwnym razie print(df)
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-27 19:18:13