漂亮地打印整个熊猫系列/数据框架

我经常在终端上使用Series和DataFrames。Series的默认值__repr__将返回一个缩减的示例,其中包含一些头部和尾部值,但其余部分未包含。

是否有一种内置的方式来漂亮地打印整个系列/数据帧?理想情况下,它应该支持适当的对齐,可能是列之间的边界,甚至可能是不同列的颜色编码。

1227863 次浏览

当然,如果这个经常出现,就做一个这样的函数。您甚至可以将其配置为每次启动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')

至于颜色,过于复杂的颜色对我来说听起来适得其反,但我同意像引导# 0这样的东西会很好。你总是可以制造问题建议这个功能。

你也可以使用# 0,有一个或多个选项:

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

这将自动将选项返回到它们以前的值。

如果你正在使用jupyter-notebook,使用display(df)而不是print(df)将使用jupyter丰富的显示逻辑(一样)

在导入pandas之后,作为使用上下文管理器的替代方法,设置这样的< >强选择< / >强来显示整个数据框架:

pd.set_option('display.max_columns', None)  # or 1000pd.set_option('display.max_rows', None)  # or 1000pd.set_option('display.max_colwidth', None)  # or 199

有关有用选项的完整列表,请参见:

pd.describe_option('display')

不需要侵入设置。有一个简单的方法:

print(df.to_string())

试试这个

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)

如果您正在使用Ipython Notebook (Jupyter)。你可以使用HTML

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

使用表格包:

pip install tabulate

考虑下面的示例用法:

import pandas as pdfrom io import StringIOfrom tabulate import tabulate
c = """Chromosome Start Endchr1 3 6chr1 5 7chr1 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 |+----+--------------+---------+-------+

您可以使用下面的方法来实现这一点。只需要传递总no。在DataFrame中显示为arg to的列

“display.max_columns”

例如:

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

使用# 0

这个答案是前面第一个答案的变体。它通过避免使用set_option使代码更具可读性。

在导入pandas之后,作为使用上下文管理器的替代方法,设置这样的< >强选择< / >强来显示大数据框架:

def set_pandas_display_options() -> None:"""Set pandas display options."""# Ref: https://stackoverflow.com/a/52432757/display = pd.options.display
display.max_columns = 1000display.max_rows = 1000display.max_colwidth = 199display.width = 1000# display.precision = 2  # set as needed
set_pandas_display_options()

在此之后,如果使用笔记本电脑,你可以使用display(df)df,否则使用print(df)

使用# 0

Pandas 0.25.3确实有# 0# 1方法,它们接受格式化选项。

使用# 0

如果你需要的是降价输出,Pandas 1.0.0有# 0# 1方法。

使用# 0

如果您需要的是HTML输出,Pandas 0.25.3确实有# 0方法,但没有Series.to_html方法。请注意,Series可以是转换DataFrame

尝试使用display()函数。这将自动使用水平和垂直滚动条,这样你就可以轻松地显示不同的数据集,而不是使用print()。

display(dataframe)

Display()也支持正确的对齐。

然而,如果你想让数据集更漂亮,你可以选择pd.option_context()。它有很多选项来清楚地显示数据框架。

注:我正在使用Jupyter笔记本电脑。

脚本

没有人提出过这种简单的纯文本解决方案:

from pprint import pprint
pprint(s.to_dict())

产生如下结果:

{'% Diabetes': 0.06365372374283895,'% Obesity': 0.06365372374283895,'% Bachelors': 0.0,'% Poverty': 0.09548058561425843,'% Driving Deaths': 1.1775938892425206,'% Excessive Drinking': 0.06365372374283895}

Jupyter笔记本

此外,当使用Jupyter笔记本时,这是一个很好的解决方案。

注意:pd.Series()没有.to_html(),所以必须转换为pd.DataFrame()

from IPython.display import display, HTML
display(HTML(s.to_frame().to_html()))

产生如下结果:

Display pd. d。系列为表在Jupyter笔记本

datascroller的创建在一定程度上就是为了解决这个问题。

pip install datascroller

它将数据帧加载到终端视图中,你可以“滚动”。用你的鼠标或方向键,有点像终端上的Excel工作簿,支持查询,高亮显示等。

import pandas as pdfrom datascroller import scroll
# Call `scroll` with a Pandas DataFrame as the sole argument:my_df = pd.read_csv('<path to your csv>')scroll(my_df)

披露:我是datascroller的作者之一

你可以将# 0设置为False:

# 0

是否打印宽DataFrame的完整DataFrame repr在多行中,max_columns仍然得到尊重,但是输出如果它的宽度超过了,会在多个“页面”上环绕吗# 0。< / p >

# 0


pd.set_option('expand_frame_repr', False)

更多细节请阅读如何漂亮地打印熊猫数据框架和系列

这个链接可以帮助你

嗨,我的朋友0号

    pd.set_option("display.max_rows", None, "display.max_columns", None)print(df)

就这么做

输出

Column0    row 01    row 12    row 23    row 34    row 45    row 56    row 67    row 78    row 89    row 910  row 1011  row 1112  row 1213  row 1314  row 1415  row 1516  row 1617  row 1718  row 1819  row 1920  row 2021  row 2122  row 2223  row 2324  row 2425  row 2526  row 2627  row 2728  row 2829  row 2930  row 3031  row 3132  row 3233  row 3334  row 3435  row 3536  row 3637  row 3738  row 3839  row 3940  row 4041  row 4142  row 4243  row 4344  row 4445  row 4546  row 4647  row 4748  row 4849  row 4950  row 5051  row 5152  row 5253  row 5354  row 5455  row 5556  row 5657  row 5758  row 5859  row 5960  row 6061  row 6162  row 6263  row 6364  row 6465  row 6566  row 6667  row 6768  row 6869  row 69