下面是“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()
运行上面的代码,可以得到和上一个示例相同的结果,但是读取速度更快,代码也更简洁。