pandas参数设置的实用小技巧

  • Post category:Python

下面是“pandas参数设置的实用小技巧”的完整攻略。

1. 为什么需要设置参数

在使用 pandas 时,有很多针对性的参数设置可以使操作更加有效率和便捷。比如,可以设置读取 csv 文件时的编码格式为 utf-8,可以设置绘图时的字体大小和颜色,可以设置数据透视表时的聚合方法等等。

2. 参数设置的方式

pandas 中的参数设置有两种方式:

  • 使用命令行参数:直接在调用函数时传递参数,比如 pd.read_csv('data.csv', encoding='utf-8')
  • 使用配置文件:可以通过 pandas.options 对象来设置参数,这样可以避免在每个函数调用中都传递参数,提高代码的可读性和可维护性。

下面分别针对这两种方式进行详细介绍。

2.1 使用命令行参数

有些函数在使用时,需要指定一些特定的参数。以 pd.read_csv() 读取 csv 文件为例,其中可以使用的参数包括:

  • filepath_or_buffer:文件路径或文件对象
  • sep:分隔符
  • header:指定哪一行作为表头
  • encoding:编码格式

如果不指定这些参数,pandas 会使用默认值或自动推断出最佳值。如果需要自定义这些参数,只需在函数调用时通过关键字参数传递对应的值即可,比如:

import pandas as pd

df = pd.read_csv('data.csv', encoding='utf-8')

2.2 使用配置文件

另一种常用的设置方式是通过配置文件来设置 pandas 的参数,这样可以一次性设置多个函数的参数,避免在每个函数调用中都传递参数,提高代码的可读性和可维护性。

Python 的确切配置文件位置是系统级和用户级。找出你是否具有环境变量PANDAS_CONFIG_MIN_LOGBITS,值的范围是0到50。如果没有找到任何系统级配置文件,则适用并且在用户级别找到的配置将覆盖任何已经存在的pandas默认设置。

要设置配置文件,可以使用 pandas.options 对象,它可以用来设置与 pandas 相关的所有参数。所有可用的参数及其默认值可以在官方文档中查看。下面是一个简单的示例,展示如何使用配置文件设置绘图时的字体大小和颜色:

import pandas as pd

pd.options.plotting.backend = 'matplotlib'
pd.options.plotting.matplotlib.rcParams['font.size'] = 12
pd.options.plotting.matplotlib.rcParams['axes.color_cycle'] = ['#00CED1', '#FF00FF', '#FFD700', '#006400']

在这个示例中,我们使用 pd.options.plotting.matplotlib.rcParams 对象来访问 matplotlib 绘图库的相关配置参数,并设置字体大小和颜色。

除了绘图参数外,还可以使用 pd.options.display 对象来设置显示输出的相关参数,比如:

import pandas as pd

pd.options.display.max_columns = 10
pd.options.display.max_rows = 20
pd.options.display.width = 1000
pd.options.display.precision = 2

这些参数分别控制 pandas 显示输出的最大列数、最大行数、输出宽度和精度等。

3. 示例说明

以下是两个关于参数设置的示例说明。

3.1 示例一:设置绘图参数

假设我们有一份 数据文件,其中记录了各个国家的疫苗接种情况。

我们可以使用 pandas 将数据读入一个 DataFrame,然后绘制一个疫苗接种量随时间变化的折线图。为了让图表更加清晰,我们可以设置一些绘图参数,比如字体大小和颜色等:

import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/vaccinations/vaccinations.csv', parse_dates=['date'])
df = df[['location', 'date', 'total_vaccinations']].dropna()

pd.options.plotting.backend = 'matplotlib'
pd.options.plotting.matplotlib.rcParams['font.size'] = 12
pd.options.plotting.matplotlib.rcParams['axes.color_cycle'] = ['#00CED1', '#FF00FF', '#FFD700', '#006400']

df.pivot(index='date', columns='location', values='total_vaccinations').plot()

运行上面的代码,可以得到一张清晰明了的疫苗接种量随时间变化的折线图。

3.2 示例二:设置读取参数

继续使用上面的数据文件,我们可以设置一些读取参数来优化读取速度。比如,我们可以设置读取时的编码格式为 latin-1,同时指定哪一行作为表头:

import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/vaccinations/vaccinations.csv', encoding='latin-1', header=0, parse_dates=['date'])
df = df[['location', 'date', 'total_vaccinations']].dropna()

df.pivot(index='date', columns='location', values='total_vaccinations').plot()

运行上面的代码,可以得到和上一个示例相同的结果,但是读取速度更快,代码也更简洁。