如何扩展输出显示以查看Pandas DataFrame的更多列?
如何扩展输出显示以查看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”的宽度选项,但都没有效果。
尝试这个:
pd.set_option('display.expand_frame_repr', False)
来自文档:
display.expand_frame_repr : 布尔型
对于宽的 DataFrame,是否将完整的 DataFrame repr 打印出来跨越多行,max_columns 依然受到影响,但如果它的宽度超过了 display.width,则输出将跨越多个“页面”进行换行。[默认值:True] [当前值:True]
请参见:pandas.set_option。
更新:自Pandas 0.23.4起
这不是必需的。如果您设置pd.options.display.width = 0
,Pandas将自动检测您的终端窗口的大小。(对于旧版本,请参见底部。)
pandas.set_printoptions(...)
已弃用。请改用pandas.set_option(optname, val)
,或等效地pd.options.
。像这样:
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(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'选项有助于查看每列的未截断形式。