Polars简明基础教程十五:配置Polars库/环境

到本讲座结束时,您将能够:

  • 配置Polars数据的显示方式
  • 保存和加载配置

Polars具有一个pl.Config命名空间,其中包含允许您控制数据如何打印到屏幕上的函数。在本讲座中,我们将探讨这些选项。

import polars as pl

csv_file = "../data/titanic.csv"
df = pl.read_csv(csv_file)

格式化表格

我们可以控制表格如何打印到屏幕上。

例如,我们可以使用set_tbl_rows来设置打印在表格中的行数。

pl.Config.set_tbl_rows(4)

df

shape: (891, 15)
survived	pclass	sex	age	sibsp	parch	fare	embarked	class	who	adult_male	deck	embark_town	alive	alone
i64	i64	str	f64	i64	i64	f64	str	str	str	bool	str	str	str	bool
0	3	"male"	22.0	1	0	7.25	"S"	"Third"	"man"	true	null	"Southampton"	"no"	false
1	1	"female"	38.0	1	0	71.2833	"C"	"First"	"woman"	false	"C"	"Cherbourg"	"yes"	false
…	…	…	…	…	…	…	…	…	…	…	…	…	…	…
1	1	"male"	26.0	0	0	30.0	"C"	"First"	"man"	true	"C"	"Cherbourg"	"yes"	true
0	3	"male"	32.0	0	0	7.75	"Q"	"Third"	"man"	true	null	"Queenstown"	"no"	true

当你做出更改时,它会一直生效,直到会话结束。

相反,为了对单个代码块应用配置设置,我们可以使用 with上下文管理器将其包装起来。

请注意,在这种情况下,我们将设置作为pl.Config的参数来应用。

with pl.Config(set_tbl_rows=2):
    print(df)

shape: (891, 15)
┌──────────┬────────┬──────┬──────┬───┬──────┬─────────────┬───────┬───────┐
│ survived ┆ pclass ┆ sex  ┆ age  ┆ … ┆ deck ┆ embark_town ┆ alive ┆ alone │
│ ---      ┆ ---    ┆ ---  ┆ ---  ┆   ┆ ---  ┆ ---         ┆ ---   ┆ ---   │
│ i64      ┆ i64    ┆ str  ┆ f64  ┆   ┆ str  ┆ str         ┆ str   ┆ bool  │
╞══════════╪════════╪══════╪══════╪═══╪══════╪═════════════╪═══════╪═══════╡
│ 0        ┆ 3      ┆ male ┆ 22.0 ┆ … ┆ null ┆ Southampton ┆ no    ┆ false │
│ …        ┆ …      ┆ …    ┆ …    ┆ … ┆ …    ┆ …           ┆ …     ┆ …     │
│ 0        ┆ 3      ┆ male ┆ 32.0 ┆ … ┆ null ┆ Queenstown  ┆ no    ┆ true  │
└──────────┴────────┴──────┴──────┴───┴──────┴─────────────┴───────┴───────┘

为了控制列数,我们使用set_tbl_cols。

pl.Config.set_tbl_cols(4)

df

shape: (891, 15)
survived	pclass	…	alive	alone
i64	i64	…	str	bool
0	3	…	"no"	false
1	1	…	"yes"	false
…	…	…	…	…
1	1	…	"yes"	true
0	3	…	"no"	true

这里有许多其他函数可以控制表格的显示方式,你可以在这里看到它们:https://pola-rs.github.io/polars/py-polars/html/reference/config.html

格式化值

为了控制浮点数的显示,我们可以使用set_fmt_float。默认设置限制了打印出的浮点数的长度。如果我们使用默认的mixed参数,Polars会对大值和小值使用科学记数法。

pl.Config.set_fmt_float()
s = pl.Series([1.2304980958725870923,1e6,1e-8])
print(s)

shape: (3,)
Series: '' [f64]
[
	1.230498
	1e6
	1.0000e-8
]

但是,我们也可以使用full参数来打印完整的浮点数。

pl.Config.set_fmt_float("full")
print(s)

shape: (3,)
Series: '' [f64]
[
	1.230498095872587
	1000000
	0.00000001
]

以类似的方式,我们可以使用set_fmt_str_lengths来设置字符串中打印的字符数。

pl.Config.set_fmt_str_lengths(200)
df.select(pl.col(pl.Utf8)).head(2)

shape: (2, 7)
sex	embarked	…	embark_town	alive
str	str	…	str	str
"male"	"S"	…	"Southampton"	"no"
"female"	"C"	…	"Cherbourg"	"yes"

详细模式

Polars默认不会打印其内部工作的任何信息。如果你想要看到更多关于此的信息,可以使用set_verbose函数。这通常是我对正在运行的单个查询想要做的事情,所以我在这里使用了with语句来实现这一点。

with pl.Config(set_verbose=1):
    df.sort("PassengerId").group_by("PassengerId").mean()

请注意,详细模式的内容是为了帮助Polars开发者进行调试,因此可能对于新加入该库的人来说不太具有信息性!在这种情况下,我们看到输出“group_by keys are sorted; running sorted key fast path”。正如我们在本课程后面将看到的,这意味着Polars正在使用快速通道算法来对这个已排序的列进行分组。

保存和加载配置

如果我们想要保存一组配置选项,我们可以使用pl.Config.save_to_file将这些选项写入一个JSON文件。

pl.Config.save_to_file("config.json")

并且,我们可以在未来的会话中使用pl.Config.load_to_file来重新加载这些配置。

pl.Config.load_from_file("config.json")

如果我们想要查看当前的选项集合,我们可以使用state来做到这一点。

pl.Config.state()

{'POLARS_AUTO_STRUCTIFY': None,
 'POLARS_FMT_MAX_COLS': '8',
 'POLARS_FMT_MAX_ROWS': '4',
 'POLARS_FMT_NUM_DECIMAL': None,
 'POLARS_FMT_NUM_GROUP_SEPARATOR': None,
 'POLARS_FMT_NUM_LEN': None,
 'POLARS_FMT_STR_LEN': '200',
 'POLARS_FMT_TABLE_CELL_ALIGNMENT': None,
 'POLARS_FMT_TABLE_CELL_LIST_LEN': None,
 'POLARS_FMT_TABLE_CELL_NUMERIC_ALIGNMENT': None,
 'POLARS_FMT_TABLE_DATAFRAME_SHAPE_BELOW': None,
 'POLARS_FMT_TABLE_FORMATTING': None,
 'POLARS_FMT_TABLE_HIDE_COLUMN_DATA_TYPES': None,
 'POLARS_FMT_TABLE_HIDE_COLUMN_NAMES': None,
 'POLARS_FMT_TABLE_HIDE_COLUMN_SEPARATOR': None,
 'POLARS_FMT_TABLE_HIDE_DATAFRAME_SHAPE_INFORMATION': None,
 'POLARS_FMT_TABLE_INLINE_COLUMN_DATA_TYPE': None,
 'POLARS_FMT_TABLE_ROUNDED_CORNERS': None,
 'POLARS_MAX_EXPR_DEPTH': None,
 'POLARS_STREAMING_CHUNK_SIZE': None,
 'POLARS_TABLE_WIDTH': None,
 'POLARS_VERBOSE': None,
 'POLARS_WARN_UNSTABLE': None,
 'set_fmt_float': 'full',
 'set_float_precision': None,
 'set_thousands_separator': '',
 'set_decimal_separator': '.',
 'set_trim_decimal_zeros': False}

请注意,所有这些配置函数在内部都设置了环境变量。上述state命令的输出中列出了这些环境变量的名称。

作为替代方案,我们可以直接将这些值设置为环境变量。

注释:

在Python中,你可以使用os.environ来设置环境变量。但是,请注意,在程序开始执行之前设置环境变量通常是更常见的做法,因为某些库(包括Polars)可能在其初始化时读取环境变量,并在整个会话期间保持这些值不变。

然而,如果你确实需要在程序运行时更改Polars的配置,你可以尝试以下步骤:

  1. 确定你想要更改的配置选项对应的环境变量名称。
  2. 使用os.environ来设置或更改该环境变量的值。
  3. 如果Polars库在其内部缓存了配置值,并且没有提供刷新这些值的机制,那么你可能需要采取额外的步骤来确保更改生效。这可能包括重启你的程序或重新初始化Polars库。

但是,请注意,直接修改环境变量可能会影响程序的其他部分,以及在同一环境中运行的其他程序。因此,在采取这种做法时要格外小心。

import os

os.environ["POLARS_FMT_MAX_COLS"] = "6"
df

shape: (891, 15)
survived	pclass	sex	…	embark_town	alive	alone
i64	i64	str	…	str	str	bool
0	3	"male"	…	"Southampton"	"no"	false
1	1	"female"	…	"Cherbourg"	"yes"	false
…	…	…	…	…	…	…
1	1	"male"	…	"Cherbourg"	"yes"	true
0	3	"male"	…	"Queenstown"	"no"	true

我们可以使用 `restore_defaults` 来恢复 Polars 的默认配置设置。

pl.Config.restore_defaults()

注释:

这通常是指在对 Polars 库进行了一系列配置更改后,将其所有设置重置为初始状态或默认值。这样可以确保在测试不同配置或开发过程中不会遗留非预期的设置影响后续的数据处理操作。

Polars简明基础教程系列

Polars简明基础教程十四:可视化(四)

Polars简明基础教程十三:可视化(三)

Polars简明基础教程十二:可视化(二)

Polars简明基础教程十一:可视化(一)

Polars简明基础教程十:Numpy和Pandas的相互转换(2)

Polars简明基础教程九:Numpy和Pandas的相互转换(1)

Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A

Polars简明基础教程六:什么是Polars的“DataFrame(数据框)_下”

Polars简明基础教程五:什么是Polars的“DataFrame(数据框)_上”

Polars简明基础教程四:懒惰模式 2:评估查询

Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)

Polars简明基础教程二:懒惰模式 1:引入懒惰模式

Polars简明基础教程一:Polars快速入门

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值