如何查看DataFrame的所有列和数据,而不显示省略号?

10 浏览
0 Comments

如何查看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 : boolean

是否将宽DataFrames的完整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 -应匹配一个单选项的字符串/正则表达式。
注意:部分匹配已经得到了方便的支持,但是,除非您使用
完整的选项名称(例如,*x.y.z.option_name*),否则您的代码可能会在未来版本中出错,如果新的选项名称与类似名称的选项被引入。
value -选项的新值。
返回
-------
无
提高
------
KeyError,如果不存在此选项
display.chop_threshold:[默认值:None] [当前值:None]
:float或None
        如果设置为浮点值,则所有小于给定阈值的浮点值将被显示为正好0,表示等。
display.colheader_justify:[默认值:right] [当前值:right]
:'left'/'right'
        控制列标题的对齐方式。由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:[默认值:True] [当前值:True]
:布尔值
        是否在多行上跨越多个“页面”,对于宽数据帧打印出完整的DataFrame repr,
        仍然考虑到max_columns,但是如果其宽度超过display.width,输出将被换行。
display.float_format:[默认值:None] [当前值:None]
:可调用
        可调用函数应接受浮点数并返回所需格式的数字的字符串。这是使用的
        有些地方,比如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没有运行在终端中,因此无法正确检测宽度。
        'None' 值表示不限制。
display.max_colwidth:[默认值:50] [当前值:50]
:整数
        列的最大字符宽度在一个Pandas数据结构的repr中。当列溢出时,“...”
        占位符嵌入输出。
display.max_info_columns:[默认值:100] [当前值:100]
:整数
        max_info_columns在DataFrame.info方法中使用,以决定是否
        将按列信息打印。
display.max_info_rows:[默认值:1690785] [当前值:1690785]
:整数或无
        max_info_rows是该帧的最大行数
        执行一个空检查其列时 repr'ing To控制台。
        默认值为1,000,000行。因此,如果DataFrame具有更多行
        1,000,000行,则不会在repr'上执行空检查。
        列因此表示起来所需的时间将大大缩短。
        None的值意味着在repr'中总是进行空检查。
display.max_rows:[默认值:60] [当前值:500]
:整数
        这设置了在打印各种输出时Pandas应输出的最大行数。例如,此值确定repr()
        打印出数据框的全部还是只是一个摘要repr。
        “无” 值表示无限大。
display.max_seq_items:[默认值:None] [当前值:None]
:整数或无
        在漂亮的打印长序列时,最多不会打印超过“max_seq_items”。
        如果省略了项目,则将在结果字符串中添加“...”。
        如果设置为None,则要打印的项目数是无限的。
display.mpl_style:[默认值:None] [当前值:None]
:布尔值
        将此设置为“默认”将修改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]
:整数
        控制在漂亮打印时要处理的嵌套级别的数量。
display.precision:[默认值:7] [当前值:7]
:整数
        浮点数输出精度(有效数字数量)。这是
        只是一个建议
display.width:[默认值:80] [当前值:1000]
:整数
        字符串显示的宽度。在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
        (新方式)。
调用def:pandas.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'选项有助于查看每列未被截断的形式。

TruncatedColumnDisplay

0