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
读取 .xlsx 文件的默认引擎是 fastexcel。此引擎使用 Rust calamine crate 将 .xlsx 文件读取到 Apache Arrow 内存表示中,Polars 无需复制数据即可读取。
df = pl.read_excel("docs/assets/data/path.xlsx")
我们可以使用 sheet_name
参数指定要读取的工作表名称。如果我们不指定工作表名称,将读取第一个工作表。
df = pl.read_excel("docs/assets/data/path.xlsx", sheet_name="Sales")
写入
我们需要安装 xlswriter 库作为额外的依赖项才能写入 Excel 文件。
$ pip install xlsxwriter
Rust Polars 目前不支持写入 Excel 文件,但可以使用此 crate 从 Rust 写入 Excel 文件。
使用 write_excel
方法将 DataFrame
写入 Excel 文件
df = pl.DataFrame({"foo": [1, 2, 3], "bar": [None, "bak", "baz"]})
df.write_excel("docs/assets/data/path.xlsx")
可以使用 worksheet
参数指定工作表名称。
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 文档。