Fork me on GitHub

12大pandas配置技巧

12大Pandas配置技巧

在Pandas的使用过程中,除了数据,我们更多的就是和表格打交道。为了更好地展示一份表格数据,必须前期有良好的设置。

本文介绍的是Pandas的常用配置技巧,主要根据options和setings来展开的。强推官网学习地址:https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html。

导入

这是一种国际惯例的导入方式!

1
import pandas as pd

忽略警告

因为版本的更新,可能Pandas的某些用法在不久将会被移除,经常会出现一些警告(不是报错),配上如下的代码即可忽略相关的警告:

1
2
3
# 忽略警告
import warnings
warnings.filterwarnings('ignore')

float型数据精度

查看默认精度

默认是保留6位小数。通过下面的方式来打印当前的精度:

1
pd.get_option( 'display.precision')
1
6

修改精度

将精度设置成2位

1
2
pd.set_option( 'display.precision',2)
# 写法2:pd.options.display.precision = 2

然后我们再次打印当前的精度则变成了2位:

1
pd.get_option( 'display.precision')
1
2

显示行

查看显示行数

默认显示的行数是60

1
pd.get_option("display.max_rows")  # 默认是60
1
60

默认最少的行数是10位:

1
pd.get_option("display.min_rows")  # 最少显示行
1
10

修改显示行数

修改最大的显示行数成999,然后再查看:

1
pd.set_option("display.max_rows",999)  # 最多显示行数
1
pd.get_option("display.max_rows")
1
999

修改最少显示行数:

1
pd.set_option("display.min_rows",20)
1
pd.get_option("display.min_rows")
1
20

重置功能

使用重置reset_option方法后,设置就会变成默认的形式(数值):

1
pd.reset_option("display.max_rows")
1
pd.get_option("display.max_rows")  # 又恢复到60
1
60
1
pd.reset_option("display.min_rows")
1
pd.get_option("display.min_rows")  # 又恢复到10
1
10

正则功能

如果我们对多个options进行了修改设置,想同时恢复的话,使用正则表达式可以重置多条option。

在这里表示以displacy开头的设置全部重置:

1
2
# ^表示以某个字符开始,在这里表示以display开始全部重置
pd.reset_option("^display")

全部重置

如果使用all,则表示对全部的设置进行重置:

1
pd.reset_option('all')

显示列

既然能够控制显示的行数,当然也是可以控制显示的列数

查看显示列数

查看默认显示的列数是20:

1
2
3
4
pd.get_option('display.max_columns')

# 另一种写法:通过属性的方式
pd.options.display.max_columns
1
20

改变列数

修改显示的列数成100:

1
2
# 修改成100
pd.set_option('display.max_columns',100)

查看修改后的列数:

1
2
# 查看修改后的值
pd.get_option('display.max_columns')
1
100

显示所有列

如果设置成None,则表示显示全部的列:

1
pd.set_option('display.max_columns',None)

重置

1
pd.reset_option('display.max_columns')

修改列宽

上面是查看列的数量,下面是针对每个列的宽度进行设置。单列数据宽度,以字符个数计算,超过时用省略号来表示。

默认列宽

默认的列宽是50个字符的宽度:

1
pd.get_option ('display.max_colwidth')
1
50

修改列宽

修改显示的列宽成100:

1
2
# 修改成100
pd.set_option ('display.max_colwidth', 100)

查看显示的列宽长度:

1
pd.get_option ('display.max_colwidth')
1
100

显示所有列

显示全部的列:

1
pd.set_option ('display.max_colwidth', None)

折叠功能

当我们输出数据宽度,超过了设置的宽度时,是否要折叠。通常使用False不折叠,相反True要折叠。

1
pd.set_option("expand_frame_repr", True)  # 折叠
1
pd.set_option("expand_frame_repr", False)  # 不折叠

代码段修改设置

上面介绍的各种设置,如果有修改的话都是整个环境的;我们还可以只给某个代码块进行临时的设置。

跑出当前的代码块,则会失效,恢复到原来的设置。

假设这里是第一个代码块:

1
2
3
4
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
60
20

这里是第二个代码块:

1
2
3
4
5
6
7
# 当前代码块进行设置

with pd.option_context("display.max_rows", 20, "display.max_columns", 10):
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
20
10

这里第三个代码块:

1
2
3
4
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
60
20

上面的例子我们可以发现:到了指定的代码块之外,设置无效

数字格式化

Pandas中有个display.float_format的方法,能够对浮点型的数字进行格式化输出,比如用千分位,百分比,固定小数位表示等。

如果其他数据类型可以转换为浮点数,也可以使用该方法。

The callable should accept a floating point number and return a string with the desired format of the number

千分位表示

当数据比较大的时候,希望通过千分位的形式来表示数据,一目了然:

1
2
3
4
df = pd.DataFrame({
"percent":[12.98, 6.13, 7.4],
"number":[1000000.3183,2000000.4578,3000000.2991]})
df

百分比

特殊符号

除了%号,我们还可以使用其他的特殊符号来表示:

零门槛转换

门槛转换是指什么意思呢?首先这个功能的实现使用的是display.chop_threshold方法。

表示将Series或者DF中数据展示为某个数的门槛。大于这个数,直接显示;小于的话,用0显示。

更改绘图方法

默认情况下,pandas使用matplotlib作为绘图后端,我们可以进行设置修改:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
%matplotlib inline

# 默认情况
df1 = pd.DataFrame(dict(a=[5,3,2], b=[3,4,1]))
df1.plot(kind="bar")
plt.show()

更改下绘图后端,变成强大的plotly:

1
2
3
4
5
6
7
8
9
10
11
# 写法1
pd.options.plotting.backend = "plotly"

df = pd.DataFrame(dict(a=[5,3,2], b=[3,4,1]))
fig = df.plot()
fig.show()

# 写法2
df = pd.DataFrame(dict(a=[5,3,2], b=[3,4,1]))
fig = df.plot(backend='plotly') # 在这里指定
fig.show()

修改列头对齐方向

默认情况,属性字段(列头)是靠右对齐的,我们可以进行设置。下面看一个来自官网的例子:

打印出当前设置并重置所有选项

pd.describe_option()是打印当前的全部设置,并充值所有选项。下面是部分设置选项:

配置技巧

下面总结了常用的配置,复制即可使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd  # 国际惯例

import warnings
warnings.filterwarnings('ignore') # 忽略文中的警告

pd.set_option( 'display.precision',2)
pd.set_option("display.max_rows",999) # 最多显示行数
pd.set_option("display.min_rows",20) # 最少显示行数
pd.set_option('display.max_columns',None) # 全部列
pd.set_option ('display.max_colwidth', 100) # 修改列宽
pd.set_option("expand_frame_repr", True) # 折叠
pd.set_option('display.float_format', '{:,.2f}'.format) # 千分位
pd.set_option('display.float_format', '{:.2f}%'.format) # 百分比形式
pd.set_option('display.float_format', '{:.2f}¥'.format) # 特殊符号
pd.options.plotting.backend = "plotly" # 修改绘图
pd.set_option("colheader_justify","left") # 列字段对齐方式
pd.reset_option('all') # 重置

本文标题:12大pandas配置技巧

发布时间:2021年12月07日 - 22:12

原始链接:http://www.renpeter.cn/2021/12/07/12%E5%A4%A7pandas%E9%85%8D%E7%BD%AE%E6%8A%80%E5%B7%A7.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea