首页 > 其他分享 >【pandas小技巧】--DataFrame的显示参数

【pandas小技巧】--DataFrame的显示参数

时间:2023-08-23 10:33:59浏览次数:62  
标签:option -- max DataFrame df 参数 pd pandas columns

我们在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")

image.png
这里显示了 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

image.png

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

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

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

2.2. max_columns

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

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

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

设置 max_columns=5

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

image.png

2.3. max_colwidth

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

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

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

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

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

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

3. 数值精度的参数

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

3.1. precision

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

调整前:

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

image.png

调整后:

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

image.png

3.2. float_format

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

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

image.png

调整后:

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

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

3.3. chop_threshold

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

比如:

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

image.png

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

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

image.png
这样,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

标签:option,--,max,DataFrame,df,参数,pd,pandas,columns
From: https://www.cnblogs.com/wang_yb/p/17650535.html

相关文章

  • 串口助手
    https://github.com/cry1109/NbCommhttps://www.vofa.plus/docs/learning/start/quick_startJscope你买盗版jlink用hss模式也能干到1khz,串口压根达不到这个速度。......
  • Python基础入门学习笔记 036 类和对象:给大家介绍对象
    给大家介绍对象把乱七八糟的数据扔进列表里,称数据层面的封装把常用的代码段打包成一个函数,称语句层面的封装把数据和代码都封装在一起,称对象层面的封装对象 = 属性 + 方法对象可以从静态(属性)与动态(方法)两个特征来描述 OO(面向对象)的特征继承class Turtle:#Pytho......
  • 时间盲注
    时间盲注:web页面只返回一个正常页面。利用页面响应时间不同,逐个拆解数据前提是数据库会执行命令代码,只是不反馈页面信息。关键函数sleep()函数函数sleep()参数为休眠时长,以秒为单位,可以为小数selectsleep(2);if()函数函数if(conditioin,true,false)condition为条件,tr......
  • Python基础入门学习笔记 037 类和对象:面向对象编程
    self是什么?Python的self其实就相当于C++的this指针。由同一个类可以生产无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就知道需要操作哪个对象的方法了。1>>>classBall:2defsetName(self,name):3self......
  • Learn Git in 30 days——第 05 天:了解仓库、工作目录、物件与索引之间的关系
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn在使用Git版本控制的过程中,有些很基本的观念必须被建立,这样才能更有效率也更有意义的学下去。有清楚且正确的观念支持,不但有助于你学习Git指令操作,更重......
  • 【2023-08-22】生活账单
    20:00愿我如星君如月,夜夜流光相皎洁。                                                 ——范成大今天6点起床,为的就是能赶上第一批批体检队列。果不其然,有了何太前......
  • Python基础入门学习笔记 032 异常处理:你不可能总是对的
    实例1:1file_name=input('请输入需要打开的文件名:')2file=open(file_name)3print('文件的内容是:')4foreach_lineinfile:5print(each_line)6file.close() Python标准异常总结 以下是Python内置异常类的层次结构:......
  • 柯尼卡6180en 打印机 复合机 手动进纸侧A4无法横向打印的问题
    问:电脑无论如何设置横向,只要选择A4尺寸,必定以纵向效果出纸且报警提示纸张错误。解:该款机型A4侧方进纸有横向和纵向区别,需要在打印机的设置中找到作业设置,手动进纸器尺寸中,有两个A4尺寸的选项,当你侧向A4纸张是横向摆放时就应当选择对应的A4尺寸,不能看到A4尺寸就可以了。 另:该款......
  • 人体感应太阳能灯原理图详细讲解
    人体感应太阳能灯原理图详细讲解三河凡科科技飞讯教学篇,人体感应太阳能灯是一种利用太阳能源供电,通过人体红外线感应技术实现智能控制灯源开关的照明设备。其原理是利用太阳能板将太阳能转化为电能,通过对电池的储存和管理,将电能存储在电池中,作为灯源使用时的电力供应。同时,通过人......
  • 实现Fetch 请求扩展超时功能
    要实现基本的超时功能其实很简单,只需要使用AbortController这个API,如果你不熟悉它,可以点击链接了解一下/***@description:创建一个fetch函数*@param{*}timeout:传入超时的时间*@return{*}返回一个新的fetch函数*/functioncreateFetch(timeout){//......