Довольно распечатать всю серию Pandas/DataFrame
Я много работаю с Series и DataFrames на терминале. Значение по умолчанию __repr__
для серии возвращает уменьшенную выборку с некоторыми значениями __repr__
и хвоста, но остальные отсутствуют.
Есть ли встроенный способ красивой печати всей серии /DataFrame? В идеале, он будет поддерживать правильное выравнивание, возможно, границы между столбцами, и, возможно, даже цветовое кодирование для различных столбцов.
Ответы
Ответ 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.