精华!12大Pandas配置技巧
大家好,我是Peter~
在Pandas的使用过程中,除了数据,我们更多的就是和表格打交道。为了更好地展示一份表格数据,必须前期有良好的设置。
本文介绍的是Pandas的常用配置技巧,主要根据options和setings来展开的。强推官网学习地址: https:// pandas.pydata.org/panda s-docs/stable/user_guide/options.html 。
导入
这是一种国际惯例的导入方式!
import pandas as pd
忽略警告
因为版本的更新,可能Pandas的某些用法在不久将会被移除,经常会出现一些警告(不是报错),配上如下的代码即可忽略相关的警告:
# 忽略警告
import warnings
warnings.filterwarnings('ignore')
float型数据精度
查看默认精度
默认是保留6位小数。通过下面的方式来打印当前的精度:
pd.get_option( 'display.precision')
修改精度
将精度设置成2位
pd.set_option( 'display.precision',2)
# 写法2:pd.options.display.precision = 2
然后我们再次打印当前的精度则变成了2位:
pd.get_option( 'display.precision')
显示行
查看显示行数
默认显示的行数是60
pd.get_option("display.max_rows") # 默认是60
默认最少的行数是10位:
pd.get_option("display.min_rows") # 最少显示行
修改显示行数
修改最大的显示行数成999,然后再查看:
pd.set_option("display.max_rows",999) # 最多显示行数
pd.get_option("display.max_rows")
修改最少显示行数:
pd.set_option("display.min_rows",20)
pd.get_option("display.min_rows")
重置功能
使用重置reset_option方法后,设置就会变成默认的形式(数值):
pd.reset_option("display.max_rows")
pd.get_option("display.max_rows") # 又恢复到60
pd.reset_option("display.min_rows")
pd.get_option("display.min_rows") # 又恢复到10
正则功能
如果我们对多个options进行了修改设置,想同时恢复的话,使用正则表达式可以重置多条option。
在这里表示以displacy开头的设置全部重置:
# ^表示以某个字符开始,在这里表示以display开始全部重置
pd.reset_option("^display")
全部重置
如果使用all,则表示对全部的设置进行重置:
pd.reset_option('all')
显示列
既然能够控制显示的行数,当然也是可以控制显示的列数
查看显示列数
查看默认显示的列数是20:
pd.get_option('display.max_columns')
# 另一种写法:通过属性的方式
pd.options.display.max_columns
改变列数
修改显示的列数成100:
# 修改成100
pd.set_option('display.max_columns',100)
查看修改后的列数:
# 查看修改后的值
pd.get_option('display.max_columns')
显示所有列
如果设置成None,则表示显示全部的列:
pd.set_option('display.max_columns',None)
重置
pd.reset_option('display.max_columns')
修改列宽
上面是查看列的数量,下面是针对每个列的宽度进行设置。单列数据宽度,以字符个数计算,超过时用省略号来表示。
默认列宽
默认的列宽是50个字符的宽度:
pd.get_option ('display.max_colwidth')
修改列宽
修改显示的列宽成100:
# 修改成100
pd.set_option ('display.max_colwidth', 100)
查看显示的列宽长度:
pd.get_option ('display.max_colwidth')
显示所有列
显示全部的列:
pd.set_option ('display.max_colwidth', None)
折叠功能
当我们输出数据宽度,超过了设置的宽度时,是否要折叠。通常使用False不折叠,相反True要折叠。
pd.set_option("expand_frame_repr", True) # 折叠
pd.set_option("expand_frame_repr", False) # 不折叠
代码段修改设置
上面介绍的各种设置,如果有修改的话都是整个环境的;我们还可以只给某个代码块进行临时的设置。
跑出当前的代码块,则会失效,恢复到原来的设置。
假设这里是第一个代码块:
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
这里是第二个代码块:
# 当前代码块进行设置
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"))
这里第三个代码块:
print(pd.get_option("display.max_rows"))
print(pd.get_option("display.max_columns"))
上面的例子我们可以发现: 到了指定的代码块之外,设置无效
数字格式化
Pandas中有个display.float_format的方法,能够对浮点型的数字进行格式化输出,比如用千分位,百分比,固定小数位表示等。
如果其他数据类型可以转换为浮点数,也可以使用该方法。
The callable should accept a floating point number and return a string with the desired format of the number
千分位表示
当数据比较大的时候,希望通过 千分位 的形式来表示数据,一目了然:
df = pd.DataFrame({
"percent":[12.98, 6.13, 7.4],
"number":[1000000.3183,2000000.4578,3000000.2991]})
百分比
特殊符号
除了%号,我们还可以使用其他的特殊符号来表示:
零门槛转换
门槛转换是指什么意思呢?首先这个功能的实现使用的是display.chop_threshold方法。
表示将Series或者DF中数据展示为某个数的门槛。大于这个数,直接显示;小于的话,用0显示。
更改绘图方法
默认情况下, pandas使用matplotlib作为绘图后端 ,我们可以进行设置修改:
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
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()
是打印当前的全部设置,并充值所有选项。下面是部分设置选项:
配置技巧
下面总结了常用的配置,复制即可使用:
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) # 折叠