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"])
高亮最大值、最小值
和高亮缺失值类似。
修改字体颜色
将指定的列修改为红色字体。
修改字体背景颜色、对齐方式、字体大小
如果觉得文章对您有所帮助,可以请囊中羞涩的作者喝杯柠檬水,万分感谢,愿每一个来到这里的人都生活愉快,幸福美满。
微信赞赏
支付宝赞赏