Pal*_*ine 5 python python-polars
当尝试从 Polars Dataframe 访问数据时,使用方括号[ ]和使用、等表达式 API有什么区别?什么时候使用哪一个?selectfilter
极坐标数据框
df = pl.DataFrame(
{
"a": ["a", "b", "a", "b", "b", "c"],
"b": [2, 1, 1, 3, 2, 1],
}
)
Run Code Online (Sandbox Code Playgroud)
通常,建议使用 Polars 表达式 API,因为大多数方法都是 Polars惰性API的一部分。API 推迟了许多操作的评估,例如选择、过滤和变异,直到实际需要结果为止。这允许查询优化,使极坐标尽可能高效。
\n相反,使用方括号表示法访问列仅适用于 eager-mode。
\n作为一个具体示例,考虑读取相当大的 .csv 文件(~700mb)的第一个元素。我们首先创建 .csv 文件并将其写入磁盘。
\nimport polars as pl\n\npl.DataFrame({"col": [0] * 100_000_000}).write_csv("df.csv")\nRun Code Online (Sandbox Code Playgroud)\n使用方括号表示法 ( [)。
由于方括号表示法不适用于LazyFrames,我们需要使用pl.read_parquet来将文件读入DataFrame对象中。
pl.read_csv("df.csv")["col"][0]\nRun Code Online (Sandbox Code Playgroud)\n在我的机器上,这大约需要 200 毫秒。
\n使用 Polars 惰性 API。
\npl.scan_csv使用 Polars 惰性 API ( , select, first, )也可以实现同样的效果item。
pl.scan_csv("df.csv").select("col").first().collect().item()\nRun Code Online (Sandbox Code Playgroud)\n评估的延迟允许 Polars 避免读取整个文件,并且在我的机器上执行只需要 300\xce\xbcs,即我们通过使用 Polars 的惰性 API 获得了约 650 倍的加速。
\n当然,有人可能会说,这里的大部分时间是通过避免读取整个 .csv 文件而不是使用selectover来节省的[。不过请注意,这仍然归功于惰性 API 的好处。
| 归档时间: |
|
| 查看次数: |
365 次 |
| 最近记录: |