如何查看DataFrame的所有列和数据,而不显示省略号?
如何查看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 : boolean
是否将宽DataFrames的完整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的帮助:
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'选项有助于查看每列未被截断的形式。