EXCEL

从性能角度分析, 建议尽量使用其它格式比如Parquet或CSV

读取excel

Polars没有原生的Excel读取器, 但是可以使用第三方引擎来解析Excel, 可用的引擎如下:

  1. fastexcel: 该引擎基于Rust的calamine, 是迄今为止最快的读取器
  2. xlsx2csv: 此阅读器将.xlsx文件解析为内存中的csv, 然后Polars使用其自己的csv阅读器读取该csv
  3. openpyxl: 通常比xls2csv慢, 但可以为难以解析的文件提供更大的灵活性

我们建议默认使用FastExcel引擎. xlsx2csv和openpyxl引擎速度较慢, 但可能具有更多解析复杂数据的功能

下面以使用fastexcel为例, 首先安装fastexcel

uv
pip
1uv add fastexcel
read_excel.xlsx
1import polars as pl
2
3df = pl.read_excel("read_excel.xlsx", sheet_name="Sheet2")
4print(df)
1shape: (3, 2)
2┌──────┬───────┐
3│ foo2 ┆ bar2  │
4│ ---  ┆ ---   │
5│ i64  ┆ str   │
6╞══════╪═══════╡
7│ 1    ┆ one   │
8│ 2    ┆ two   │
9│ 3    ┆ three │
10└──────┴───────┘
TIP

注意这里我们可以通过sheet_name指定要读取哪个sheet, 默认为第一个sheet, 如果想查看有哪些sheet, 可以使用参照下面的代码

1import fastexcel as fe
2
3e = fe.read_excel("read_excel.xlsx")
4
5e.sheet_names
1['Sheet1', 'Sheet2']

写入excel

使用write_excel写入excel, 可以通过worksheet指定工作表的名称

uv
pip
uv install xlsxwriter
1import polars as pl
2
3df = pl.DataFrame({
4	"foo":[1,2,3],
5	"bar":["None","bak","baz"]
6})
7df.write_excel("write_excel.xlsx",worksheet="write_by_xlsxwriter")

Polars可以创建具有多个工作表和格式丰富的Excel文件, 更多详情, 可以参阅write_excel的文档