如何扩展输出显示以查看Pandas DataFrame的更多列?

25 浏览
0 Comments

如何扩展输出显示以查看Pandas DataFrame的更多列?

有没有一种方法可以在交互或脚本执行模式下扩大输出的显示?

具体而言,我正在使用Pandas DataFrame上的describe()函数。当DataFrame为五列(标签)宽度时,我获得了想要的描述性统计信息。然而,如果DataFrame有更多的列,统计数据会被压缩,返回类似于这样的结果:

>> Index: 8 entries, count to max
>> Data columns:
>> x1          8  non-null values
>> x2          8  non-null values
>> x3          8  non-null values
>> x4          8  non-null values
>> x5          8  non-null values
>> x6          8  non-null values
>> x7          8  non-null values

\"8\"值是针对6列或7列的数据?\"8\"代表什么?

我已经尝试将IDLE窗口拖动到更大,以及增加“配置IDLE”的宽度选项,但都没有效果。

admin 更改状态以发布 2023年5月22日
0
0 Comments

尝试这个:

pd.set_option('display.expand_frame_repr', False)

来自文档:

display.expand_frame_repr : 布尔型

对于宽的 DataFrame,是否将完整的 DataFrame repr 打印出来跨越多行,max_columns 依然受到影响,但如果它的宽度超过了 display.width,则输出将跨越多个“页面”进行换行。[默认值:True] [当前值:True]

请参见:pandas.set_option

0
0 Comments

更新:自Pandas 0.23.4起

这不是必需的。如果您设置pd.options.display.width = 0,Pandas将自动检测您的终端窗口的大小。(对于旧版本,请参见底部。)

pandas.set_printoptions(...)已弃用。请改用pandas.set_option(optname, val),或等效地pd.options. = val。像这样:

import pandas as pd
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

这是set_option的帮助

set_option(pat,value)-设置指定选项的值
可用选项:
display.[chop_threshold,colheader_justify,column_space,date_dayfirst,
         date_yearfirst,encoding,expand_frame_repr,float_format,height,
         line_width,max_columns,max_colwidth,max_info_columns,max_info_rows,
         max_rows,max_seq_items,mpl_style,multi_sparse,notebook_repr_html,
         pprint_nest_depth,precision,width]
mode.[sim_interactive,use_inf_as_null]
参数
----------
pat-str / regexp,应与单个选项匹配。
注意:支持部分匹配以方便起见,但除非您使用
完整选项名称(例如,*x.y.z.option_name*),否则如果新选项
引入具有类似名称的选项,您的代码可能会在未来中断版本。
价值-选项的新值。
回归
-------
无
引发
------
如果没有此选项,则引发KeyError
display.chop_threshold:[默认值:无][当前值:无]
:float或无
        如果设置为浮点值,则所有小于给定阈值的浮点值
        将由repr和friends显示为精确的0。
display.colheader_justify:[默认值:右][当前值:右]
:'左'/'右'
        控制列标题的对齐方式。由DataFrameFormatter使用。
display.column_space:[默认值:12][当前值:12]没有可用的描述。
display.date_dayfirst:[默认值:False][当前值:False]
:布尔值
        当为True时,使用日期首日打印和解析日期,例如2005年20月20日
display.date_yearfirst:[默认值:False][当前值:False]
:布尔值
        当为True时,使用年份优先打印和解析日期,例如2005年01月20日
display.encoding:[默认值:UTF-8][当前值:UTF-8]
:str / unicode
        默认为控制台检测到的编码。
        指定用于由to_string返回的字符串的编码,
        这些字符串通常意味着在控制台上显示的字符串。
display.expand_frame_repr:[默认值:True][当前值:True]
:布尔值
        是否为宽数据帧打印完整的DataFrame repr
        跨多个行,“max_columns”仍然受到尊重,但输出将
        如果其宽度超过“显示宽度”,则跨越多个“页面”包装。
display.float_format:[默认值:无][当前值:无]
:回调
        可调用应接受浮点数并返回
        所需格式的数字字符串。这是使用的
        某些地方,如SeriesFormatter。
        请参阅core.format.EngFormatter作为示例。
display.height:[默认值:60][当前值:1000]
:int
        已弃用。
        (已弃用,请改用“display.height”)。
display.line_width:[默认值:80][当前值:1000]
:int
        已弃用。
        (已弃用,请改用“display.width”)。
display.max_columns:[默认值:20][当前值:500]
: int
        max_rows和max_columns用于__repr__()方法来决定是否
        to_string()或info()用于将对象呈现为字符串。如果案例
        Python / IPython在终端运行,可以将其设置为0,Pandas将正确地自动检测
        格式,在所有列无法垂直适合的情况下,将在情况下换为较小的格式。 IPython笔记本电脑,
        IPython qtconsole或IDLE不运行在终端中,因此它不是
        可以正确检测宽度。
        '无'值表示无限制。
display.max_colwidth: [默认值:50] [当前值:50]
:int
        在Pandas数据结构的repr中,列的最大宽度为列
        当列溢出时,将嵌入一个“…”
        输出。
display.max_info_columns: [默认值:100] [当前值:100]
:int
        max_info_columns用于DataFrame.info方法以决定是否
        将打印每列信息。
display.max_info_rows: [默认值:1690785] [当前值:1690785]
:int或无
        max_info_rows是一个框架的最大行数
        在检查其列的空值时,当repring到控制台时。
        默认值为100万行。所以,如果DataFrame具有更多的行
        100万行,不会对该null执行任何检查
        列,因此表示将花费更少的时间
        在交互式会话中显示。 None的值意味着始终是
        repr'ing时执行空检查。
display.max_rows: [默认值:60][当前值:500]
:int
        这设置当Pandas在打印时应输出的最大行数
        各种输出。例如,此值确定是否应使用repr()
        为数据帧完全打印或仅概述repr。
        '无'值表示无限制。
display.max_seq_items:[默认值:无][当前值:无]
:int或无
        当漂亮地打印长序列时,不会再多于'max_seq_items'
        将被打印。如果省略了项目,它们将被表示为添加
        “...”到结果字符串。
        如果设置为无,则要打印的项目数量不受限制。
display.mpl_style:[默认值:无][当前值:无]
:bool
        将其设置为“default”将修改matplotlib使用的rcParams
        以便默认情况下为情节提供更令人愉悦的视觉样式。
        将其设置为None / False将其值恢复到初始值。
display.multi_sparse:[默认值:True][当前值:True]
:布尔值
        “稀疏化”MultiIndex显示(不要显示重复的
        在组内外层级中的元素)
display.notebook_repr_html:[默认值:True][当前值:True]
:布尔值
        当为True时,IPython笔记本将使用html表示法
        Pandas对象(如果可用)。
display.pprint_nest_depth:[默认值:3][当前值:3]
:int
        在漂亮地打印时控制要处理的嵌套级别
display.precision:[默认值:7][当前值:7]
:int
        浮点数输出精度(有效数字的数量)。这是
        只是建议
display.width:[默认值:80][当前值:1000]
:int
        字符显示的宽度。如果Python / IPython在运行
        终端运行,可以将其设置为None,Pandas将自动检测
        宽度。
        请注意,IPython笔记本电脑,IPython qtconsole或IDLE不运行在
        终端,因此无法正确检测宽度。
mode.sim_interactive:[默认值:False][当前值:False]
:布尔值
        是否为测试目的模拟交互模式
mode.use_inf_as_null:[默认值:False][当前值:False]
:布尔值
        True表示将None,NaN,INF,-INF视为null(旧方式),
        False表示None和NaN为null,但INF,-INF不是null
        (新方式)。
调用定义:pd.set_option(self,* args,** kwds)

旧版本信息。其中许多已被弃用。

正如@bmu 所提到的,Pandas会自动检测(默认情况下)显示区域的大小,当一个对象的值不适合在显示区域时,将使用概要视图。您提到调整IDLE窗口大小,但没有效果。如果您执行print df.describe().to_string(),它是否适合IDLE窗口大小?

终端大小由pandas.util.terminal.get_terminal_size()(已弃用和删除)确定,它返回一个元组,包含显示器的(宽度,高度)。输出是否与您的IDLE窗口大小匹配?可能存在问题(在运行终端程序时,Emacs曾出现过此类问题)。

请注意,可以绕过自动检测,pandas.set_printoptions(max_rows=200, max_columns=10)将不会在行数和列数不超过给定限制时切换到概要视图。


'max_colwidth'选项有助于查看每列的未截断形式。

TruncatedColumnDisplay

0