Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 漂亮地打印整个熊猫系列/数据框_Python_Pandas_Dataframe - Fatal编程技术网

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

Python 漂亮地打印整个熊猫系列/数据框,python,pandas,dataframe,Python,Pandas,Dataframe,我经常在终端上使用系列和数据帧。序列的默认值\uuuu repr\uuuu返回一个缩减的样本,其中包含一些头和尾值,但缺少其余值 是否有一种内置方式可以漂亮地打印整个系列/数据帧?理想情况下,它将支持正确的对齐,可能是列之间的边界,甚至可能是不同列的颜色编码。当然,如果出现这种情况,请创建类似于此的函数。您甚至可以将其配置为在每次启动IPython时加载: 至于色彩,过于复杂的色彩听起来会适得其反,但我同意类似的东西会很好。您可以随时建议使用此功能。您也可以使用,具有一个或多个选项: with

我经常在终端上使用系列和数据帧。序列的默认值
\uuuu repr\uuuu
返回一个缩减的样本,其中包含一些头和尾值,但缺少其余值


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

当然,如果出现这种情况,请创建类似于此的函数。您甚至可以将其配置为在每次启动IPython时加载:

至于色彩,过于复杂的色彩听起来会适得其反,但我同意类似的东西会很好。您可以随时建议使用此功能。

您也可以使用,具有一个或多个选项:

with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
    print(df)
这将自动将选项返回到其以前的值


如果您正在使用jupyter笔记本电脑,使用
display(df)
而不是
print(df)
将使用jupyter丰富的显示逻辑。

导入熊猫后,作为使用上下文管理器的替代方法,设置用于显示整个数据帧:

pd.set_option('display.max_columns', None)  # or 1000
pd.set_option('display.max_rows', None)  # or 1000
pd.set_option('display.max_colwidth', None)  # or 199
def set_pandas_display_options() -> None:
    """Set pandas display options."""
    # Ref: https://stackoverflow.com/a/52432757/
    display = pd.options.display

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

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

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笔记本电脑(Jupyter)。你可以使用HTML

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

使用表格软件包:

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

您可以使用下面的方法实现这一点。只需将数据框中的列总数作为arg传递给

'显示.max_列'

例如:

df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
    print(df)
使用
pd.options.display
这个答案是先前答案的一个变体。它通过避免使用
set\u选项
使代码更具可读性


导入熊猫后,作为使用上下文管理器的替代方法,设置用于显示大型数据帧的:

pd.set_option('display.max_columns', None)  # or 1000
pd.set_option('display.max_rows', None)  # or 1000
pd.set_option('display.max_colwidth', None)  # or 199
def set_pandas_display_options() -> None:
    """Set pandas display options."""
    # Ref: https://stackoverflow.com/a/52432757/
    display = pd.options.display

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

set_pandas_display_options()
之后,如果使用笔记本电脑,您可以使用
显示(df)
或仅使用
显示(df)
,否则
打印(df)

使用
编辑字符串
Pandas 0.25.3没有接受格式选项的文件和方法

使用
来降低价格
如果您需要的是降价输出,那么Pandas 1.0.0提供了一些方法

使用
创建html
如果您需要的是HTML输出,那么熊猫0.25.3确实有一个方法,但没有一个
系列。请注意,
系列
可以连接到
数据帧

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

display()还支持正确对齐

但是,如果您想使数据集更美观,可以选中
pd.option\u 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\u html()
,因此必须将其转换为
pd.DataFrame()

产生如下结果:

{'% Diabetes': 0.06365372374283895,
 '% Obesity': 0.06365372374283895,
 '% Bachelors': 0.0,
 '% Poverty': 0.09548058561425843,
 '% Driving Deaths': 1.1775938892425206,
 '% Excessive Drinking': 0.06365372374283895}
创建部分是为了解决这个问题

pip安装datascroller
它将数据框加载到终端视图中,您可以用鼠标或箭头键“滚动”,有点像终端上的Excel工作簿,支持查询、突出显示等

将熊猫作为pd导入
从datascroller导入滚动
#调用'scroll',将数据帧作为唯一参数:
my_df=pd.read_csv(“”)
滚动(my_df)
您可以设置为
False

display.expand\u frame\u repr:boolean

是否打印宽数据帧的完整数据帧报告 跨多行,
max_columns
仍受尊重,但输出 如果宽度超过,将环绕多个“页面”
显示宽度

[默认值:True]




有关更多详细信息,请阅读

输出减少是由于默认选项造成的,您可以使用
pd.set_选项('display.max_rows',1000)
更改这些选项。例如,着色是另一回事,我假设您正在谈论为html repr输出着色。我认为这根本不是内置的。@EdChum:谢谢,我知道这个
显示。max_rows
,问题是大多数时候我确实希望输出被截断。我只是偶尔希望看到完整的输出。我可以将该选项设置为一个非常高的值,使用默认的
\uuuu repr\uuuu
,然后还原该值,但这似乎有点麻烦,在这种情况下,我还可以编写自己的漂亮打印函数。@EdChum:关于颜色-这是一个颜色终端,所以最好让每一行以不同的颜色打印,以便轻松地将值彼此区分开来。Pandas与ipython配合得很好,ipython使用了高级终端功能,包括颜色,所以我想知道Pandas本身是否有一些着色功能。我在ipython笔记本中使用Pandas而不是ipython作为终端外壳,在
set\u option
中没有任何支持着色的选项,它可能是一个插件,可以应用一些css或输出格式。这是我认为你能实现这一目标的唯一方法链接已经失效。也许应该是这样?如果有人、任何人,甚至是作者,能够验证并修复链接,并将这些评论标记为过时,那就太好了。这是不好的,因为它假设在打印操作之前该选项设置为默认值,这不一定是这样,因此可能会导致意外行为。将选项上下文与with语句结合使用是更健壮的选项,它将恢复到以前设置的任何内容。这样做将在不使用任何表格格式的情况下打印,是吗
pd.set_option('expand_frame_repr', False)