头图

Pandas是一个在数据科学中常用的功能强大的Python库。它可以从各种来源加载和操作数据集。当使用Pandas时,默认选项就已经适合大多数人了。但是在某些情况下,我们可能希望更改所显示内容的格式。所以就需要使用Pandas的一些定制功能来帮助我们自定义内容的显示方式。

1、控制显示的行数

在查看数据时,我们希望看到比默认行数更多或更少的行数(默认行数为10)。

 arr_data = np.random.default_rng().uniform(0, 100, size=(100,5))
 pd.DataFrame(arr_data, columns=list('ABCDE'))

可以看到,默认包括数据帧的前5行和后5行。因为这样可以防止pandas在调用数据框架时显示大量的数据,从而降低计算机的速度。

这里有两个选项可用于控制显示的行数。

首先是display.max_rows,它控制在截断之前显示的最大行数。如果数据中的行数超过此值,则显示将被截断。默认设置为60。

如果希望显示所有行,则需要将display.max_rows设置为None。如果数据非常大,这可能会占用很多资源并且降低计算速度。

 pd.set_option('display.max_rows', None)

这样就可以看到df中的所有行。

如果数据的行数多于 max_rows 设置的行数,则必须将 display.min_rows 参数更改为要显示的值。还需要确保 max_rows 参数大于 min_rows。

 pd.set_option('display.min_rows', 20)

如果将min_rows设置为20,那么当查看时,将看到顶部有10行,底部有10行。

2、控制显示的列数

当处理包含大量列的数据集时,pandas将截断显示,默认显示20列。下图第9列和第15列之间的三个点(省略号)表示已经被截断了

上述数据,是使用以下代码显示的:

 arr_data = np.random.default_rng().uniform(0, 100, size=(100,25))
 df = pd.DataFrame(arr_data)
 df

要查看显示上的更多列,可以更改display.max_columns参数

 pd.set_option('display.max_columns', 30)

这样做最多将显示30列。但是这可能会导致其他问题,例如当有图片时这会变得很难看。

3、禁止科学记数法

通常在处理科学数据时,你会遇到非常大的数字。一旦这些数字达到数百万,Pandas就会将它们重新格式化为科学符号,这可能很有帮助,但并不总是如此。

要生成具有非常大值的数据,可以使用以下代码。

 arr_data = np.random.default_rng().uniform(0, 10000000, size=(10,3))
 df = pd.DataFrame(arr_data)
 df

如果想要显示这些数字的完整形式而不使用科学符号。这可以通过更改float_format显示选项并传入一个lambda函数来实现。这将重新格式化显示,使其具有不带科学记数法的值和最多保留小数点后3位。

 pd.set_option('display.float_format', lambda x: f'{x:.3f}')

如果你想让它看起来更好看,你可以在千位之间添加逗号分隔符。

下面的代码可能看起来与上面的相同,但是如果您仔细查看该代码的f'{x:部分后面有一个逗号。

 pd.set_option('display.float_format', lambda x: f'{x:,.3f}')

4、更改数据的浮点精度

在某些情况下,数据可能在小数点后有太多的值,这样看起来很乱。默认情况下,Pandas将在小数点后显示6个位。

为了使它更容易阅读,可以通过调用display.precision来减少显示的值的数量。

 pd.set_option('display.precision', 2)

数值列的浮点精度已降低到2。

此设置只更改数据的显示方式。它不更改底层数据值。

5、控制Float格式

在某些情况下,数字可以代表百分比或货币价值。如果是这种情况,用正确的单位来格式化它们是很方便的。

若要在列后面添加百分比符号,可以调用display.float_format选项,并使用f-string传入想要显示的格式:

 pd.set_option('display.float_format',  f'{:,.3f}%')

要以美元符号开始,可以这样更改代码:

 pd.set_option('display.float_format',  f'${:,.2f}')

6、更改默认的Pandas绘图库

在进行探索性数据分析时,通常需要快速生成数据图。可以使用matplotlib来构建一个plot,但是在Pandas中可以使用.plot()方法使用几行代码来完成它。

Pandas为我们提供了一系列可以使用的绘图库:

  • matplotlib
  • hvplot >= 0.5.1
  • holoviews
  • pandas_bokeh
  • plotly >= 4.8
  • altair

要更改当前的默认绘图库,需要更改plotting.backend选项。

 pd.options.plotting.backend = "hvplot"

这样就使用.plot方法创建plot时就会调用设置的库

 df.plot(kind='scatter', x='1', y='2')

7、重置显示选项

如果希望将特定选项的参数设置回默认值,可以调用reset_option方法并传入想要重置的选项。

 pd.reset_option('display.max_rows')

或者可以通过all作为参数将它们全部更改回默认值。

 pd.reset_option('all')

如果想一次设置多个选项可以这样做。

 settings = {
     'max_columns': 30,
     'min_rows':40,
     'max_rows': 30,
     'precision': 3
     }
 for option, value in settings.items():
     pd.set_option("display.{}".format(option), value)

这样做可以帮助节省时间,减少编写的代码数量,提高可读性。

总结

Pandas是一个功能强大的库,但是默认选项可能不适合特定的需要。本文介绍了一些常用选项,可以改进查看数据的方式。

https://avoid.overfit.cn/post/2aad9747867c4807b2cfc128e5eb06b8

作者:Andy McDonald


deephub
119 声望91 粉丝