我认为在未来一年里,我们会看到一个围绕Polars开发的优秀的机器学习预处理库。最近对该库的更新使得这个过程中的一个重要步骤变得更加容易……
填充一些空值
在机器学习预处理中,一个常见的步骤是将训练集的数据与测试集共享。例如,我们可能想用训练集中的值来填充测试集中的空值。
Polars中新的with_context方法正是这样做的。它允许你在一个数据框中使用另一个数据框的表达式!
在下面的示例中,我们在“Age”列中有一些空值。
(
test_df
.with_context(
# 将训练列重命名以避免列名冲突
train_df.select(pl.all().name.suffix("_train"))
)
# 使用训练集中的中位数填充测试集中的空值
.with_column(
pl.col("Age").fill_null(pl.col("Age_train").median())
)
)
我们想要用训练集中的中位数来替换测试集中的空值。
我们通过在测试数据框上调用with_context来将训练数据框带入上下文中。然后我们就可以填充一些空值了!
保持惰性
with_context的优势在于我们仍然保持在Polars中强大的惰性模式下,因此我们仍然可以利用诸如查询优化之类的功能。
实际上,我们总是在惰性模式下使用with_context,因为这就是Polars将查询的不同部分组合在一起的方式。
往期热门文章:
从 Pandas 到 Polars 二十六:在Polars中,不要遍历列
从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力
从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望
从 Pandas 到 Polars 十三:流式处理的关键参数
从 Pandas 到 Polars 十:“Polars 表达式“是什么?