浏览一些Kaggle竞赛,你会看到布尔掩码是过滤Pandas数据框的常见方式。
然而,阅读Polars的文档时,你会发现它们建议你不要使用这种方法。相反,它们推荐使用.filter方法。
为什么会这样呢?
我认为部分原因是为了性能。但是,在处理一千万行数据集时,布尔掩码和.filter查询给出了类似的结果(而且两者都比Pandas快得多)。
使用 .filter 的真正原因是为了利用延迟模式(lazy mode)和查询优化(query optimization)。
在 Pandas 中,你需要在应用过滤器之前将整个数据框读入内存。
而在 Polars 的延迟模式下,你可以将过滤器构建到完整的查询中——包括从 CSV 中读取哪些数据。
在这种情况下,这导致 Polars 的速度比 Pandas 快 14 倍。
总的来说,Polars推荐使用.filter而不是布尔掩码,因为它有助于将更多内容推送到查询优化器中。
如果你正在尝试使用Polars但没有使用这些方法,那么不妨试一试并比较你现有代码的执行时间——我想你会有惊喜的!