我们在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. 2021-04-27:如果一个字符相邻的位置没有相同字符,那么这个位置的字符出现不能被消掉。比如:“ab“,其中a和b都不能被消掉 。如果一个字符相邻的位置有相同字符,就可以一起消掉。比如:“abbb

    2021-04-27:如果一个字符相邻的位置没有相同字符,那么这个位置的字符出现不能被消掉.比如:"ab",其中a和b都不能被消掉 .如果一个字符相邻的位置有相同字符,就可以一起消 ...

  2. AcWing 1024. 装箱问题

    有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积(正整数). 要求 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入格式 第一行是一个整数 V,表示箱子容量. 第二行是一个 ...

  3. RabbitMQ系列-概念及安装

    1. 消息队列 消息队列是指利用队列这种数据结构进行消息发送.缓存.接收,使得进程间能相互通信,是点对点的通信 而消息代理是对消息队列的扩展,支持对消息的路由,是发布-订阅模式的通信,消息的发送者并不 ...

  4. 把vue组件发布到npm

    一直以来项目都使用他人开发的组件,于是乎自己也想倒腾着做一个,发布到npm 在其他项目里直接使用,这个组件上传和纯js 还是有一定区别的,在这个过程中也遇到了一些小问题,网上找了许多案例,都不是太全面 ...

  5. 小程序打印饼图报错VM6541:1 thirdScriptError Converting circular structure to JSON;

    今日使用小程序开发饼图页面,由于一个页面需要打印多个饼图,所以需要将echarts对象进行缓存,于是出现了如下js报错问题 一. 错误代码 VM6541:1 thirdScriptError Conv ...

  6. golang 包管理

  7. Java的Atomic原子类

    Java SDK 并发包里提供了丰富的原子类,我们可以将其分为五个类别,这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类. 对基本数据类型的变量值进行原子更新: 对对象变量的指向进行原子 ...

  8. 使用脚本收发 protobuf 协议数据

    问题背景 最近做了一个 ipv6 相关的功能,发现使用 getifaddrs 获取的本地 ipv6 地址有可能不是真实的网络 ipv6 地址: 例如上图中通过 getifaddrs 获得了多个本地 i ...

  9. 在 Istio 服务网格内连接外部 MySQL 数据库

    为了方便理解,以 Istio 官方提供的 Bookinfo 应用示例为例,利用 ratings 服务外部 MySQL 数据库. Bookinfo应用的架构图如下: 其中,包含四个单独的微服务: pro ...

  10. 前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度

    前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度, 下载完整代码请访问https://ext.dcloud.net.cn/plugin?id=13003 效果图如下:   ...