Подтвердить что ты не робот

Довольно распечатать всю серию Pandas/DataFrame

Я много работаю с Series и DataFrames на терминале. Значение по умолчанию __repr__ для серии возвращает уменьшенную выборку с некоторыми значениями __repr__ и хвоста, но остальные отсутствуют.

Есть ли встроенный способ красивой печати всей серии /DataFrame? В идеале, он будет поддерживать правильное выравнивание, возможно, границы между столбцами, и, возможно, даже цветовое кодирование для различных столбцов.

4b9b3361

Ответ 1

Вы также можете использовать option_context с одним или несколькими параметрами:

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
    print(df)

Это автоматически вернет параметры к их предыдущим значениям.

Если вы работаете с jupyter-notebook, использование display(df) вместо print(df) будет использовать расширенную логику отображения jupyter (например,).

Ответ 2

Не нужно взламывать настройки. Существует простой способ:

print(df.to_string())

Ответ 3

Конечно, если это много, сделайте такую ​​функцию. Вы даже можете настроить его для загрузки при каждом запуске 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')

Что касается окраски, то слишком сложная с цветами кажется мне контрпродуктивной, но я согласен с чем-то вроде bootstrap .table-striped. Вы всегда можете создать проблему, чтобы предложить эту функцию.

Ответ 4

После импорта панд, в качестве альтернативы использованию диспетчера контекста, установите такие параметры для отображения целых кадров данных:

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

Полный список полезных опций смотрите:

pd.describe_option('display')

Ответ 5

Используйте пакетный пакет:

pip install tabulate

И рассмотрим следующий пример использования:

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

Ответ 6

Если вы используете Ipython Notebook (Jupyter). Вы можете использовать HTML

from IPython.core.display import HTML
display(HTML(df.to_html()))

Ответ 7

Этот ответ представляет собой вариант предыдущего ответа от lucidyan. Это делает код более читабельным, избегая использования set_option.

После импорта панд в качестве альтернативы использованию диспетчера контекста установите такие параметры для отображения больших фреймов данных:

def set_pandas_display_options() -> None:
    display = pd.options.display

    display.max_columns = 1000
    display.max_rows = 1000
    display.max_colwidth = 199
    display.width = None
    # display.precision = 2  # set as needed

set_pandas_display_options()

После этого вы можете использовать display(df) или просто df при использовании ноутбука, в противном случае print(df).

Ответ 8

Попробуйте это

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)

Ответ 9

Вы можете добиться этого, используя метод ниже. просто передать общее нет. столбцов, представленных в DataFrame как аргумент

'display.max_columns'

Например:

df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
    print(df)

Ответ 10

Попробуйте использовать функцию display(). При этом будут автоматически использоваться горизонтальные и вертикальные полосы прокрутки, и вы сможете легко отображать различные наборы данных вместо использования print().

display(dataframe)

display() также поддерживает правильное выравнивание.

Однако, если вы хотите сделать набор данных более красивым, вы можете проверить pd.option_context(). У этого есть много вариантов, чтобы ясно показать кадр данных.

Примечание. Я использую ноутбуки Jupyter.