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

如何使用Ibis获取表中各浮点数值列的均值与标准差?

使用Ibis计算数值列的聚合统计量

一、获取浮点类型列的均值与标准差

假设你已经通过Ibis连接到目标数据源并拿到了数据表对象(示例中命名为table),可以按以下步骤操作:

  1. 从表的schema中筛选出所有浮点类型的列:
# 筛选浮点类型列
float_cols = [col for col, dtype in table.schema().items() if dtype.is_float()]
  1. 为每个浮点列生成均值和标准差的聚合表达式,执行查询得到结果:
# 构建聚合表达式:每个列对应mean和std两个统计量
agg_exprs = []
for col in float_cols:
    agg_exprs.append(table[col].mean().name(f"{col}_mean"))
    agg_exprs.append(table[col].std().name(f"{col}_std"))

# 执行聚合查询
float_stats = table.select(agg_exprs).execute()

执行后float_stats会返回一个DataFrame,包含所有浮点列的均值和标准差结果。

二、计算所有数值列的聚合结果

如果需要覆盖所有数值类型列(整数、浮点数等),只需调整列的筛选逻辑:

  1. 筛选所有数值类型列:
# 筛选所有数值类型列(整数、浮点数等)
numeric_cols = [col for col, dtype in table.schema().items() if dtype.is_numeric()]
  1. 构建聚合表达式(可按需扩展统计量,示例包含均值、标准差、总和、中位数):
# 构建聚合表达式
agg_exprs = []
for col in numeric_cols:
    agg_exprs.extend([
        table[col].mean().name(f"{col}_mean"),
        table[col].std().name(f"{col}_std"),
        table[col].sum().name(f"{col}_sum"),
        table[col].median().name(f"{col}_median")
    ])

# 执行查询
numeric_stats = table.select(agg_exprs).execute()

如果只需要均值和标准差,删除extend里多余的统计量即可。

补充说明

  • Ibis的is_float()和is_numeric()方法是跨后端通用的,不用针对不同数据库调整类型判断逻辑。
  • 聚合逻辑会被Ibis下推到数据源执行,比拉取全量数据到本地计算效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:22:15