【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实现手机号码显示部分
从个人信息保护性的角度来讲,我们在开发过程中总会想办法去保护用户的一些个人信息.就如本篇博文所讲,我们有时会将用户的手机号码只显示出部分,这是很多网站都有做的功能.这个功能实现起来也是特别的简单,只需 ...
随机推荐
- ERRORS: app1.Book.photo: (fields.E210) Cannot use ImageField because Pillow is not installed.
报错: (env) E:\pyAPP\mybook>python manage.py makemigrations SystemCheckError: System check identifi ...
- 前端学习 node 快速入门 系列 —— 事件循环
事件循环 本篇将对以下问题进行讨论: 浏览器有事件循环,node 也有事件循环,两者有什么异同? node 核心特性(事件驱动和非阻塞 I/O )和事件循环有什么关系? node 中的高并发和高性能和 ...
- CSS3 clip-path:打造独特创意设计效果的秘密武器
大家好,我是程序视点的小二哥. 今天小二哥将给大家分享一篇有前端实验室的文章.一部由CSS技术实现的作品.它将再一次证明CSS的强大力量. 欣赏 这是一部由阿姆斯特丹设计师Bryan James通过3 ...
- Django认证流程源码及自定义 Backend
Django自己的认证方法只能认证用户名和密码 user = authenticate(**credentials) # authenticate会自动校验用户名和密码 authenticate 源码 ...
- Galaxy v-21.01 发布,新的流程和历史栏体验
Galaxy Project(https://galaxyproject.org/)是在云计算背景下诞生的一个生物信息学可视化分析开源项目. 该项目由美国国家科学基金会(NSF).美国国家人类基因组研 ...
- 2023-06-17:说一说redis中渐进式rehash?
2023-06-17:说一说redis中渐进式rehash? 答案2023-06-17: 在Redis中,如果哈希表的数组一直保持不变,就会增加哈希冲突的可能性,从而降低检索效率.为了解决这个问题,R ...
- [ARM 汇编]高级部分—ARM汇编编程实战—3.3.1 嵌入式系统的基本概念
嵌入式系统是一种特殊的计算机系统,通常用于执行特定的任务.它通常包含一个或多个微处理器.存储器和外围设备.与通用计算机系统相比,嵌入式系统具有体积小.功耗低.成本低和实时性强等特点.在这一部分,我们将 ...
- Java 统计大串中小串出现的次数 举例:在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"中java出现了5次
代码如下: public static void main(String[] args) { //大串 String max = "woaijavawozhenaijavawozhendea ...
- 重新搞懂Git,掌握日常命令和基本操作
1.git Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有内容. Git 易于学习,占用空间很小,性能快如闪电.它超越了Subversion,CVS,Perfo ...
- GGTalk 开源即时通讯系统源码剖析之:服务端全局缓存
继上篇<GGTalk 开源即时通讯系统源码剖析之:数据库设计>介绍了 GGTalk 数据库中所有表的结构后,接下来我们将进入GGTalk服务端的核心部分. GGTalk 对需要频繁查询数据 ...