Skip to content

Excel

Polars 可以从 Python 读取和写入 Excel 文件。从性能角度来看,如果可能的话,我们建议使用其他格式,例如 Parquet 或 CSV 文件。

读取

Polars 没有原生的 Excel 读取器。相反,它使用一个称为“引擎”的外部库将 Excel 文件解析为 Polars 可以解析的形式。可用的引擎有:

  • fastexcel: 该引擎基于Rust的calamine crate,并且是迄今为止最快的读取器。
  • xlsx2csv: 该读取器将 .xlsx 文件解析为内存中的 CSV,然后 Polars 使用其自己的 CSV 读取器读取该文件。
  • openpyxl: 通常比xls2csv慢,但对于难以解析的文件可以提供更多的灵活性。

我们建议使用默认的fastexcel引擎。xlsx2csv和openpyxl引擎速度较慢,但在解析复杂数据时可能具有更多功能。如果fastexcel读取器无法处理特定的Excel文件,这些引擎可能会有所帮助。

要使用这些引擎之一,必须安装适当的Python包作为额外的依赖项。

$ pip install fastexcel xlsx2csv openpyxl 

读取.xslx文件的默认引擎是fastexcel。该引擎使用Rust的calamine crate将.xslx文件读取到Apache Arrow的内存表示中,Polars无需复制数据即可读取。

read_excel

df = pl.read_excel("docs/assets/data/path.xlsx")

我们可以使用sheet_name参数指定要读取的工作表名称。如果我们没有指定工作表名称,将读取第一个工作表。

read_excel

df = pl.read_excel("docs/assets/data/path.xlsx", sheet_name="Sales")

写入

我们需要安装xlswriter库作为额外的依赖项来写入Excel文件。

$ pip install xlsxwriter

目前在Rust Polars中尚不支持写入Excel文件,但可以通过使用此crate从Rust写入Excel文件。

DataFrame写入Excel文件是通过write_excel方法完成的:

write_excel

df = pl.DataFrame({"foo": [1, 2, 3], "bar": [None, "bak", "baz"]})
df.write_excel("docs/assets/data/path.xlsx")

工作表的名称可以通过worksheet参数指定。

write_excel

df = pl.DataFrame({"foo": [1, 2, 3], "bar": [None, "bak", "baz"]})
df.write_excel("docs/assets/data/path.xlsx", worksheet="Sales")

Polars 可以创建包含多个工作表和各种格式的丰富 Excel 文件。更多详情,请参阅 write_excel 的 API 文档。