我们在jupyter notebook中使用pandas显示DataFrame的数据时,
由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期。

这时,就需要调整pandas显示DataFrame的方式。
pandas为我们提供了很多调整显示方式的参数,具体参见文末附录中的链接。
本篇介绍几个我经常用到的参数来抛砖引玉。

1. 参数的相关函数

对于参数的控制,pandas提供了完整的方法。

  1. describe_option:获取参数的描述信息
  2. get_option:获取参数的值
  3. set_option:设置参数的值
  4. reset_option:重置参数的值,也就是将参数恢复到默认值

max_columns(显示最大的列数)为例,演示上面各个函数的使用:

import pandas as pd

pd.describe_option("display.max_columns")


这里显示了 max_columns参数的详细信息,包括默认值和当前的值。

我们先设置此参数的值,然后再获取值看看:

pd.set_option("display.max_columns", 10)
pd.get_option("display.max_columns") # 运行结果>>>
# 10

max_columns参数的值变成了10

最后重置此参数的值:

pd.reset_option("display.max_columns")
pd.get_option("display.max_columns") # 运行结果>>>
# 20

max_columns参数的值又恢复成了20

上面这4个函数是我们设置参数的过程进程会用到的,
下面演示几个常用参数的设置后的效果。

2. 行列相关的参数

控制行列相关的参数,多数情况是为了让数据能够更好的显示在屏幕上。
我比较常用的有以下三个:

2.1. max_rows

控制显示的最大行数。
随机生成一个20行的数据,max_rows的默认值是60,所以20行数据会全部显示出来。

df = pd.DataFrame(np.random.rand(20, 4))
df.columns = list("ABCD")
df

如果需要截一个数据概要的图,20行就太多了,可以设置显示的函数少一些。

pd.set_option("display.max_rows", 10)
df


设置之后,显示前后5行,中间的用省略号(...)表示。

2.2. max_columns

这个参数是控制显示的最大列数。

df = pd.DataFrame(np.random.rand(5, 14))
df.columns = list("ABCDEFGHIJKLMN")
df


显示很长,屏幕窄的话会出现滚动条。

设置 max_columns=5

pd.set_option("display.max_columns", 5)
df

2.3. max_colwidth

这个参数是设置单个列的宽度的,如果某个列的内容太长,可以用这个参数来控制。
比如:

df = pd.DataFrame({
"ID": [1, 2, 3 ],
"title": ["title01", "title02",
"long long long long long title"],
})
df


某个特别长的值会将列的宽度撑大,如果列比价多的时候,会浪费显示的空间。

通过 max_colwidth 调整列的最大宽度。

pd.set_option("display.max_colwidth", 10)
df


设置最多显示10个字符,这样,显示起来没有那么突兀了。

3. 数值精度的参数

除了行列的调整,还有一种就是数值精度的调整。
数值精度的调整有个好处是不用修改原始数据,只是控制它显示出来的样子。

3.1. precision

precision是调整数据显示的精度的参数。

调整前:

df = pd.DataFrame(np.random.rand(3, 4))
df.columns = list("ABCD")
df

调整后:

pd.set_option("display.precision", 2)
df

3.2. float_format

float_format也是调整精度的,不过更加灵活,还可以控制格式化显示效果。
调整前:

df = pd.DataFrame(np.random.rand(3, 4))
df.columns = list("ABCD")
df

调整后:

pd.set_option("display.float_format",
"{:.2%}".format)
df


直接转换成百分比方式显示,比precision更加直观。

3.3. chop_threshold

chop_threshold 帮助我们在显示时忽略掉不关注的数据。

比如:

df = pd.DataFrame(np.random.rand(3, 4))
df.columns = list("ABCD")
df

对于0.9以下的数据,我们不太关心,那么:

pd.set_option("display.chop_threshold", 0.9)
df


这样,0.9以下的数据都显示成0,便于我们观察有多少有效数据。

注意:这里调整的都是数据显示出来的样子,数据实际并没有改变。
比如上面很多显示为 0.0 的数据,在 df 中并不是0.0,还是原来的值。

4. 补充

pandas中能够调整参数还有很多,具体可以参考:
https://pandas.pydata.org/pandas-docs/version/1.5/reference/api/pandas.describe_option.html

【pandas小技巧】--DataFrame的显示参数的更多相关文章

  1. 【Python学习】解决pandas中打印DataFrame行列显示不全的问题

    在使用pandas的DataFrame打印时,如果表太长或者太宽会自动只给前后一些行列,但有时候因为一些需要,可能想看到所有的行列. 所以只需要加一下的代码就行了. #显示所有列 pd.set_opt ...

  2. PHP 小技巧之如何避免参数多次传递?

    开发中经常遇到函数参数传递的问题:比如 A调用B,B调用C,C调用D, A->B->C->D 而D方法可能需要一个参数,这个参数只能在A中获取(比如A是控制器方法),这个参数这样一级 ...

  3. pandas小技巧

    1. 删除列 import pandas as pd df.drop("Unnamed: 0", axis=1, inplace=True) 2. 转换列的格式 df[" ...

  4. php练习7——类的运用(四则运算or面积计算[javascript小技巧——根据需求显示不同界面])

    要求:请编写一个类,该类可以进行四则运算,也可以进行矩形面积计算 1.程序 viewCount.html  Count.class.php      printCount.php 2.结果      ...

  5. pandas 小技巧

    1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ...

  6. 【js】中的小技巧

    本文主要介绍一些JS中用到的小技巧 1. 类型强制转换   1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为 ...

  7. 可以提升幸福感的js小技巧(下)

    4.数字 4.1 不同进制表示法 ES6中新增了不同进制的书写格式,在后台传参的时候要注意这一点. 29 // 10进制 035 // 8进制29 原来的方式 0o35 // 8进制29 ES6的方式 ...

  8. pandas参数设置小技巧

    在日常使用pandas的过程中,由于我们所分析的数据表规模.格式上的差异,使得同样的函数或方法作用在不同数据上的效果存在差异. 而pandas有着自己的一套参数设置系统,可以帮助我们在遇到不同的数据时 ...

  9. Pandas一些小技巧

    Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ...

  10. PHP开发小技巧①①—php实现手机号码显示部分

    从个人信息保护性的角度来讲,我们在开发过程中总会想办法去保护用户的一些个人信息.就如本篇博文所讲,我们有时会将用户的手机号码只显示出部分,这是很多网站都有做的功能.这个功能实现起来也是特别的简单,只需 ...

随机推荐

  1. Vue Element-ui 之 el-table自动滚动

    首先是 div结构布局 <div id="scrollId">//对el-table盒子设置 id 属性 <div style="height: 100 ...

  2. 计蒜客蓝桥杯省赛模拟G

    题目 一天蒜头君得到 n 个字符串 si,每个字符串的长度都不超过 1010. 蒜头君在想,在这 n 个字符串中,以 si 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来 n ...

  3. [MAUI]在.NET MAUI中复刻苹果Cover Flow

    @ 目录 原理 3D旋转 平行变换 创建3D变换控件 绘制封面图片 应用3D旋转 应用平行变换 绘制倒影 创建绑定属性 创建绑定数据 创建布局 计算位置 计算3D旋转 创建动效 项目地址 Cover ...

  4. remote: HTTP Basic:Access denied fatal:Authentication failed for

    近来在一天新电脑上面使用git pull 一个项目,老是提示 Access denied, 找了许多方法,ssh key这些都配置了还是不行,当时别提有多尬 看嘛这就是pull 时的提示 // *** ...

  5. 百度云原生数据库GaiaDB的HTAP与多地多活技术实践

    摘要:云原生数据库在使用存算分离技术后,可以在完全兼容MYSQL协议和语法的情况下,极大提升单实例所能承载的数据规模与吞吐能力上限.但除了对客户端兼容外,对整个数据生态(地域容灾,数据分析,备份恢复) ...

  6. odoo开发教程九:Odoo10 API

    一:纪录集API model中的数据是以集合的形式使用的,因此可以使用集合运算来操作. 集合运算符 record in set返回record是否在set中,record须为单条记录,record n ...

  7. python 环境下使用PIP 报错的解决方法

    最近做一个小程序项目,使用djangorestframework,安装restframework 出现错误,安装环境Python2.7:出现错误如下:  "UnicodeEncodeErro ...

  8. XXE漏洞详解

    XML外部实体注入--XXE漏洞详解 简单来说一下这个XXE漏洞,在这之前我也阅读了很多关于XXE漏洞的文章,发现有一小部分文章题目是 "XXE外部实体注入" 这样的字眼,我想这样 ...

  9. ASL芯片CS5466方案设计|集睿致远CS5466代理商|Type-c转HDMI电路原理

    CS5466作为ASL集睿致远新推出的高性能Type-C to HDMI2.1协议转换器,可以通过HDMI输出端口作为TMDS或FRL发射机进行操作. CS5466适配于多个配件市场和现实应用主板,例 ...

  10. Web网页音视频通话之Webrtc相关操作(一)

    目录 打开摄像头/关闭摄像头 静音/解除静音 打开视频/关闭视频 截图且下载 打开摄像头/关闭摄像头 效果图 HTML <!DOCTYPE html> <html lang=&quo ...