You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars v0.19.19中计算均值时忽略NaN的最优方法

问题解答

在Polars v0.19.19及后续版本中,要高效实现忽略NaN的均值计算,直接使用pl.Expr.mean()方法的skip_nulls=True参数即可,这是Polars原生的矢量化操作,性能远优于map_elements结合np.nanmean的方案。

示例代码

import polars as pl
import numpy as np

test_data = pl.DataFrame(
    {
        "group": ["A", "A", "B", "B"],
        "values": [1.0, np.nan, 2.0, 3.0]
    }
)

# 使用skip_nulls=True参数忽略NaN计算均值
result = test_data.group_by("group").agg(pl.col("values").mean(skip_nulls=True))
print(result)

运行结果

shape: (2, 2)
┌───────┬────────┐
│ group ┆ values │
│ ---   ┆ ---    │
│ str   ┆ f64    │
╞═══════╪════════╡
│ A     ┆ 1.0    │
│ B     ┆ 2.5    │
└───────┴────────┘

为什么这是最优方案

  • 原生矢量化操作:mean(skip_nulls=True)是Polars内部实现的矢量化计算,避免了map_elements带来的Python循环开销,在处理大数据集时性能差距会非常明显。
  • 符合Polars API设计:这是官方推荐的用法,无需依赖外部库(如NumPy),代码更简洁且维护性更好。

内容的提问来源于stack exchange,提问作者SamV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:14:56