【pandas小技巧】--DataFrame的显示参数
我们在jupyter notebook中使用pandas显示DataFrame的数据时,
由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期。
这时,就需要调整pandas显示DataFrame的方式。pandas为我们提供了很多调整显示方式的参数,具体参见文末附录中的链接。
本篇介绍几个我经常用到的参数来抛砖引玉。
1. 参数的相关函数
对于参数的控制,pandas提供了完整的方法。
- describe_option:获取参数的描述信息
- get_option:获取参数的值
- set_option:设置参数的值
- 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的显示参数的更多相关文章
- 【Python学习】解决pandas中打印DataFrame行列显示不全的问题
在使用pandas的DataFrame打印时,如果表太长或者太宽会自动只给前后一些行列,但有时候因为一些需要,可能想看到所有的行列. 所以只需要加一下的代码就行了. #显示所有列 pd.set_opt ...
- PHP 小技巧之如何避免参数多次传递?
开发中经常遇到函数参数传递的问题:比如 A调用B,B调用C,C调用D, A->B->C->D 而D方法可能需要一个参数,这个参数只能在A中获取(比如A是控制器方法),这个参数这样一级 ...
- pandas小技巧
1. 删除列 import pandas as pd df.drop("Unnamed: 0", axis=1, inplace=True) 2. 转换列的格式 df[" ...
- php练习7——类的运用(四则运算or面积计算[javascript小技巧——根据需求显示不同界面])
要求:请编写一个类,该类可以进行四则运算,也可以进行矩形面积计算 1.程序 viewCount.html Count.class.php printCount.php 2.结果 ...
- pandas 小技巧
1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ...
- 【js】中的小技巧
本文主要介绍一些JS中用到的小技巧 1. 类型强制转换 1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为 ...
- 可以提升幸福感的js小技巧(下)
4.数字 4.1 不同进制表示法 ES6中新增了不同进制的书写格式,在后台传参的时候要注意这一点. 29 // 10进制 035 // 8进制29 原来的方式 0o35 // 8进制29 ES6的方式 ...
- pandas参数设置小技巧
在日常使用pandas的过程中,由于我们所分析的数据表规模.格式上的差异,使得同样的函数或方法作用在不同数据上的效果存在差异. 而pandas有着自己的一套参数设置系统,可以帮助我们在遇到不同的数据时 ...
- Pandas一些小技巧
Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ...
- PHP开发小技巧①①—php实现手机号码显示部分
从个人信息保护性的角度来讲,我们在开发过程中总会想办法去保护用户的一些个人信息.就如本篇博文所讲,我们有时会将用户的手机号码只显示出部分,这是很多网站都有做的功能.这个功能实现起来也是特别的简单,只需 ...
随机推荐
- 2021-09-10:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案
2021-09-10:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标.你可以假设每种输入只会对应一个答案, ...
- Selenium - 元素操作(1) - 基础操作/元素信息/元素检查
Selenium - 元素操作 元素示例 基础操作 点击元素: .click() # 点击百度一下按钮 driver.find_element_by_id("su").click( ...
- odoo总结---类继承和视图继承
类继承 自从有了类,就有继承,继承是类最大的特性,ODOO开发有不例外,先ODOO集采总结如下: 1)类继承:扩展类中没有_name属性,因为它继承了父类的_name.对现有模型的扩展, 添加新功能, ...
- springboot接入influxdb
转载请注明出处: 1.添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> < ...
- 为 Windows 系统替换优雅的苹果字体
使用 Windows 的童鞋,大家估计都用惯了默认的微软雅黑字体,字体本身也很不错,但使用久了也该换个别的字体了,换个字体换个心情嘛. 今天给大家推荐一款非常棒的一键更换 Windows 系统字体的软 ...
- vivo 帐号服务稳定性建设之路-平台产品系列06
作者:vivo 互联网平台产品研发团队- Shi Jianhua.Sun Song 帐号是一个核心的基础服务,对于基础服务而言稳定性就是生命线.在这篇文章中,将与大家分享我们在帐号稳定性建设方面的经验 ...
- JIRA安装
JIRA安装 操作系统: 阿里云centos6.8 域名: yan.jzhsc.com 1.安装与配置JAVA sudo -u root -H bash # 在oracle官网下载JDK,安装并配置环 ...
- 使用 Sa-Token 实现 [记住我] 模式登录、七天免登录
一.需求分析 如图所示,一般网站的登录界面都会有一个 [记住我] 按钮,当你勾选它登录后,即使你关闭浏览器再次打开网站,也依然会处于登录状态,无须重复验证密码: 本文将详细介绍在 Sa-Token中, ...
- C++面试八股文:override和finial关键字有什么作用?
某日二师兄参加XXX科技公司的C++工程师开发岗位第22面: (二师兄好苦逼,节假日还在面试...) 面试官:C++的继承了解吗? 二师兄:(不好意思,你面到我的强项了..)了解一些. 面试官:什么是 ...
- 10. Mybatis的缓存
1. Mybatis 的一级缓存 一级缓存是 SqlSession 级别的,通过同一个 SqlSession 查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问 , ...