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

pandas,技巧,dataframe,显示,参数 · 浏览次数 : 198

小编点评

**调整pandas数据显示参数的几种方法** 为了让数据能够更好地显示在屏幕上,我们可以调整 pandas 中的参数。以下是一些常用的参数及其设置方法: **1. max_rows 控制显示的最大行数** ```python df.columns = list("ABCD") pd.set_option("display.max_rows", 10) ``` **2. max_columns 控制显示的最大列数** ```python df.columns = list("ABCDEFGHIJKLMN") pd.set_option("display.max_columns", 5) ``` **3. max_colwidth 设置单个列的宽度** ```python df = pd.DataFrame({ "ID": [1, 2, 3], "title": ["title01", "title02", "long long long long long title"] }) pd.set_option("display.max_colwidth", 10) ``` **4. precision 设置数值精度的格式** ```python df = pd.DataFrame(np.random.rand(3, 4)) pd.set_option("display.precision", 2) ``` **5. chop_threshold 设置数据忽略的阈值** ```python df = pd.DataFrame(np.random.rand(3, 4)) pd.set_option("display.chop_threshold", 0.9) ``` **6. float_format 设置数据格式化显示** ```python df = pd.DataFrame(np.random.rand(3, 4)) pd.set_option("display.float_format", "}{:.2%}") ``` **7. 调整数据显示的格式** ```python df.columns = list("ABCD") pd.set_option("display.max_columns", 5) pd.set_option("display.max_rows", 10) ``` **注意:**调整参数可能影响数据的实际展示效果,需要根据实际情况进行调整。

正文

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

与【pandas小技巧】--DataFrame的显示参数相似的内容:

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

我们在`jupyter notebook`中使用`pandas`显示`DataFrame`的数据时,由于屏幕大小,或者数据量大小的原因,常常会觉得显示出来的表格不是特别符合预期。 这时,就需要调整`pandas`显示`DataFrame`的方式。`pandas`为我们提供了很多调整显示方式的参数,具

【pandas小技巧】--DataFrame的显示样式

上一篇介绍了`DataFrame`的显示参数,主要是对`DataFrame`中值进行调整。 本篇介绍`DataFrame`的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效的获取主要信息。 下面介绍一些针对单个数据和批量数据的样式调整方式

【pandas小技巧】--花哨的DataFrame

最近github上发现了一个库(`plottable`),可以用简单的方式就设置出花哨的 `DataFrame` 样式。 github上的地址:[https://github.com/znstrider/plottable](https://github.com/znstrider/plottabl

【pandas小技巧】--反转行列顺序

反转`pandas` `DataFrame`的行列顺序是一种非常实用的操作。在实际应用中,当我们需要对数据进行排列或者排序时,通常会使用到Pandas的行列反转功能。这个过程可以帮助我们更好地理解数据集,发现其中的规律和趋势。同时,行列反转还可以帮助我们将数据可视化,使得图表更加易于理解。 除了常规

【pandas小技巧】--随机挑选子集

在 `pandas` 中,如果遇到数据量特别大的情况,随机挑选 DataFrame 的子集可以帮助我们更深入地了解数据,从而更好地进行数据分析和决策。 随机挑选子集的用途主要有: 1. 评估数据质量:随机挑选 DataFrame 的子集可以帮助我们检查数据集的质量,以便进一步探索和挖掘数据。例如,我

【pandas小技巧】--数据转置

所谓**数据转置**,就是是将原始数据表格沿着对角线翻折,使原来的行变成新的列,原来的列变成新的行,从而更方便地进行数据分析和处理。 `pandas`中`DataFrame`的转置非常简单,每个`DataFrame`对象都有一个`T`属性,通过这个属性就能得到转置之后的`DataFrame`。下面介

【pandas小技巧】--日期相关处理

日期处理相关内容之前`pandas基础`系列中有一篇专门介绍过,本篇补充两个常用的技巧。 # 1. 多列合并为日期 当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用 `to_datetime`函数来处理: ```pytho

【pandas小技巧】--统计值作为新列

这次介绍的小技巧不是统计,而是把统计结果作为**新列**和原来的数据放在一起。`pandas`的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,没有把它们合并在一个数据集中来观察。 下面通过两个场景示例来演示如果把统计值作为新列的数据。 # 1. 成绩统计的场景

【pandas小技巧】--category类型补充

`category`类型在**pandas基础**系列中有一篇介绍数据类型的文章中已经介绍过。`category`类型并不是`python`中的类型,是`pandas`特有的类型。 `category`类型的优势那篇文章已经介绍过,当时只是介绍了如何将某个列的数据转换成`category`类型,以及

【pandas小技巧】--目录(完结)

`pandas`小技巧系列是介绍的是使用`pandas`分析数据时,最常用的一些操作技巧。 具体包括: 1. [创建测试数据](https://www.cnblogs.com/wang_yb/p/17552748.html) 学习pandas的过程中,为了尝试pandas提供的各类功能强大的函数,常