pandas的set_option,自定义显示DataFrame

楔子

相信在使用 pandas 的时候都遇到过如下情况,当我们打印一个列数或行数比较多的 DataFrame 时,该 DataFrame 不会全部显示,中间一部分会用省略号代替,举个栗子:

由于行数比较多,默认情况下不会全部显示,而是只显示一部分;至于列也是同理,只不过我们这里的列不多,因此全部显示了。

而至于到底显示多少行、多少列,pandas 有着自己的一套选项(option)设置系统,可以帮助我们在遇到不同的数据时灵活调节从而达到最好的效果,设置方式则是通过 pd.set_option 函数实现。当然除了设置显示的行数、列数之外,我们还可以设置很多其它的属性,下面来看一下。

注意:使用 pd.set_option 仅仅是在原有数据基础上优化显示状态,并不会对原始数据进行任何修改,我们也随时可以通过重置选项,将数据恢复成默认显示状态。

显示指定数量的行 / 列

display.max_rows 用于控制 DataFrame 的最大显示行数,display.max_columns 用于控制 DataFrame 的最大显示列数。

当你觉得 DataFrame 显示的行数或列数不合适的时候,就可以通过上面的方式进行设置,并且没有限制,可以随时自由调整,增大、减小均可。

但如果我们希望一个 DataFrame 不受最大行数或列数的制约,也就是有多少行就显示多少行,有多少列就显示多少列,这个时候该怎么做呢?

但是不建议这么设置,尤其是 display.max_rows,因为一个 DataFrame 的行数可能会很多(百万行也是很正常的),此时将其全部显示出来是很费资源的。

设置每列的最大显示宽度

对于一些内容长度较长的数据,譬如长文本,在查看时过长的部分会使用 ... 简化显示,我们可以通过 display.max_colwidth 来设置每列的最大显示宽度。

同理,我们也可以设置为 None,那么单元格的内容无论多长,都会完整的显示出来。

修改小数点精度

我们可以设置 DataFrame 在显示时,浮点数的小数点位数。

注意:这只是显示的时候保留小数点后三位,但是数据本身还和之前一样,我们打印一下。

print(df.loc[0, "a"])  # 1.9978488211190717

指定小于某个数的元素显示为 0

通过 display.chop_threshold 参数我们在不修改原始数据的情况下,指定数据框中绝对值小于阈值的数显示为 0。

格式化浮点数

通过 display.float_format 参数我们可以设置浮点数的显示格式,譬如这里我们给浮点数加上 ¥ 前缀并设定保留两位小数:

设置 info() 方法中非缺失值检查的行数上限

针对数据框的 info() 方法可以帮助我们查看数据框的一些概览信息,譬如每一列对应的非缺失值个数。但默认情况下当数据框行数大于 1690784 行时,再查看 info() 信息,会出于计算效率的考虑,而略去缺失值检查信息。这时我们可以通过设置 display.max_info_rows 参数来提高这个上限:

还原设置

如果我们想将某项设置还原成默认状态,可以通过 pd.reset_option 来实现。

# 输出想要还原的选项即可
pd.reset_option("display.max_colwidth")
# 还可以一次性将所有选项都还原成默认状态
pd.reset_option("all")
# 该方法支持正则,下面表示将 display 开头的选项都还原成默认状态
pd.reset_option("^display")

忽略警告

取消 pandas 相关 warning 提示:

pd.set_option("mode.chained_assignment", None) 
# 全局取消 warning
# import warnings
# warnings.filterwarnings('ignore')

让 pandas 支持 LaTex

我们可以让 DataFrame 中的内容支持 Latex 显示(需要使用 $$ 包住)

pd.set_option("display.html.use_mathjax",True)

修改默认绘图引擎

修改 pandas 默认绘图引擎为 plotly(需要提前安装好 plotly)

pd.set_option("plotting.backend","plotly")

基于 style 的个性化设置

上面使用 pd.set_option 进行的设置都是全局的,一旦设置,在 notebook 关闭之前一直有效。而通过 df.style.xxx 输出的数据均是一次性的,并且该方法可以将 DataFrame 展示的更加丰富多彩。

隐藏索引 / 列

通过 df.style.hide_index() 可以在输出 DataFrame 的时候将索引隐藏起来;通过 df.style.hide_columns() 可以在输出 DataFrame 的时候将指定的列隐藏起来。

标记缺失值

我们在输出 DataFrame 的时候也可以将缺失值替换成指定的值。

高亮缺失值

对缺失值高亮显示:

如果有多个列,我们也可以只对部分列进行高亮显示。

df.style.highlight_null(null_color="pink", subset=["xx", "yy"])

高亮最大值、最小值

和高亮缺失值类似。

修改字体颜色

将指定的列修改为红色字体。

修改字体背景颜色、对齐方式、字体大小

posted @ 2020-03-26 22:11  古明地盆  阅读(1995)  评论(0编辑  收藏  举报