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

新手上路,请多包涵

有没有办法在交互式或脚本执行模式下扩大输出显示?

具体来说,我在 Pandas 上使用 describe() 函数 DataFrame 。当 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

无论是 6 列还是 7 列,都会给出“8”值。 “8”指的是什么?

我已经尝试将 IDLE 窗口拖得更大,以及增加“配置 IDLE”宽度选项,但无济于事。

原文由 beets 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

更新:熊猫 0.23.4 起

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

pandas.set_printoptions(...) 已弃用。相反,使用 pandas.set_option(optname, val) ,或等效地使用 pd.options.<opt.hierarchical.name> = 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,编码,expand_frame_repr,float_format,高度,
         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,精度,宽度]
模式。[sim_interactive,use_inf_as_null]

参数
----------
pat - str/regexp 应该匹配一个选项。

注意:为方便起见,支持部分匹配,但除非您使用
完整的选项名称(例如,*xyzoption_name*),您的代码将来可能会中断
如果引入了具有相似名称的新选项的版本。

value - 期权的新价值。

退货
--------
没有任何

加注
------
KeyError 如果不存在这样的选项

display.chop_threshold:[默认:无] [当前:无]
:浮动或无
        如果设置为浮点值,则所有浮点值都小于给定阈值
        repr 和朋友将显示为 0。
display.colheader_justify:[默认:正确] [当前:正确]
: '左右'
        控制列标题的对齐方式。由 DataFrameFormatter 使用。
display.column_space:[默认:12] [当前:12]没有可用的描述。

display.date_dayfirst:[默认:False] [当前:False]
: 布尔值
        如果为 True,则打印并解析日期,例如 20/01/2005
display.date_yearfirst:[默认:False] [当前:False]
: 布尔值
        如果为 True,则打印和解析日期,首先是年份,例如 2005/01/20
display.encoding:[默认:UTF-8] [当前:UTF-8]
: str/unicode
        默认为检测到的控制台编码。
        指定用于 to_string 返回的字符串的编码,
        这些通常是要在控制台上显示的字符串。
display.expand_frame_repr:[默认:真] [当前:真]
: 布尔值
        是否为宽 DataFrame 打印出完整的 DataFrame repr
        跨越多行,`max_columns` 仍然受到尊重,但输出将
        如果宽度超过 `display.width`,则环绕多个“页面”。
display.float_format:[默认:无] [当前:无]
: 可调用
        可调用对象应该接受一个浮点数并返回
        具有所需数字格式的字符串。这是使用
        在像 SeriesFormatter 这样的地方。
        有关示例,请参见 core.format.EngFormatter。
display.height:[默认:60] [当前:1000]
: 整数
        已弃用。
        (已弃用,请改用 `display.height`。)

display.line_width:[默认:80] [当前:1000]
: 整数
        已弃用。
        (已弃用,请改用`display.width`。)

display.max_columns:[默认:20] [当前:500]
: 整数
        max_rows 和 max_columns 用于 __repr__() 方法来决定是否
        to_string() 或 info() 用于将对象呈现为字符串。如果
        python/IPython 在终端中运行,可以设置为 0 和 Pandas
        将正确地自动检测终端的宽度并换成更小的
        格式以防所有列垂直不适合。 IPython 笔记本,
        IPython qtconsole 或 IDLE 不在终端中运行,因此它不是
        可以进行正确的自动检测。
        “无”值意味着无限。
display.max_colwidth:[默认:50] [当前:50]
: 整数
        repr 中列的最大字符宽度
        熊猫数据结构。当列溢出时,一个“...”
        占位符嵌入在输出中。
display.max_info_columns:[默认:100] [当前:100]
: 整数
        在 DataFrame.info 方法中使用 max_info_columns 来决定是否
        将打印每列信息。
display.max_info_rows:[默认:1690785] [当前:1690785]
: 整数或无
        max_info_rows 是一个帧的最大行数
        repr'ing 到控制台时对其列执行空检查。
        默认值为 1,000,000 行。所以,如果一个 DataFrame 有更多
        1,000,000 行不会对
        列,因此表示将花费更少的时间
        在交互式会话中显示。 None 的值意味着总是
        repr'ing 时执行空检查。
display.max_rows:[默认:60] [当前:500]
: 整数
        这设置打印时 Pandas 应该输出的最大行数
        出各种输出。例如,这个值决定了 repr()
        对于数据框,可以完全打印出来,也可以只打印出摘要 repr。
        “无”值意味着无限。
display.max_seq_items:[默认:无] [当前:无]
: 整数或无

        当漂亮地打印一个长序列时,不超过 `max_seq_items`
        将被打印。如果项目被省略,它们将由加号表示
        的“...”到结果字符串。

        如果设置为无,则要打印的项目数不受限制。
display.mpl_style:[默认:无] [当前:无]
: 布尔

        将此设置为“默认”将修改 matplotlib 使用的 rcParams
        默认情况下为绘图提供更令人愉悦的视觉风格。
        将此设置为 None/False 会将值恢复为其初始值。
display.multi_sparse:[默认:True] [当前:True]
: 布尔值
        "sparsify" MultiIndex 显示(不重复显示
        组内外部级别的元素)
display.notebook_repr_html:[默认:真] [当前:真]
: 布尔值
        当 True 时,IPython notebook 将使用 html 表示
        Pandas 对象(如果可用)。
display.pprint_nest_depth:[默认:3] [当前:3]
: 整数
        控制漂亮打印时要处理的嵌套级别数
display.precision:[默认值:7] [当前:7]
: 整数
        浮点输出精度(有效位数)。这是
        只是一个建议
display.width:[默认:80] [当前:1000]
: 整数
        显示的宽度(以字符为单位)。如果 python/IPython 正在运行
        可以将其设置为 None 的终端,Pandas 将正确地自动检测
        宽度。
        请注意,IPython notebook、IPython qtconsole 或 IDLE 不在
        终端,因此无法正确检测宽度。
mode.sim_interactive:[默认:False] [当前:False]
: 布尔值
        是否为了测试目的模拟交互模式
mode.use_inf_as_null:[默认:False] [当前:False]
: 布尔值
        True 表示将 None、NaN、INF、-INF 视为 null(旧方式),
        False 表示 None 和 NaN 为空,但 INF、-INF 不为空
        (新的方法)。
调用 def: pd.set_option(self, *args, **kwds)


旧版本信息。其中大部分已被弃用。

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

终端大小由 pandas.util.terminal.get_terminal_size() (已弃用和删除)确定,这将返回一个包含显示的 (width, height) 的元组。输出是否与 IDLE 窗口的大小匹配?可能存在问题(之前在 Emacs 中运行终端时存在问题)。

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


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

截断列显示

原文由 Wouter Overmeire 发布,翻译遵循 CC BY-SA 4.0 许可协议

试试这个:

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

从文档中:

display.expand_frame_repr : 布尔值

是否跨多行打印出宽 DataFrame 的完整 DataFrame repr,max_columns 仍然受到尊重,但如果宽度超过 display.width,输出将跨越多个“页面”。 [默认:真] [当前:真]

请参阅: _pandas.set_option_ 。

原文由 Robert Rose 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题