python blaze计算多列的平均值

标签 python pandas blaze

我有一个像这样的Python blaze数据

import blaze as bz

bdata = bz.Data([(1, 'Alice', 100.9, 100),
           (2, 'Bob', 200.6, 200),
           (3, 'Charlie', 300.45, 300),
           (5, 'Edith', 400, 400)],
          fields=['id', 'name', 'revenue', 'profit'])

我想计算数字列的平均值。我尝试过这样的事情

print {col: bdata[col].mean() for col in ['revenue', 'profit']}

我明白了

{'profit': 250.0, 'revenue': 250.4875}

但我想像 pandas 那样一次性计算,例如 data.mean()

有什么想法或建议吗???

最佳答案

Pandas 聚合有点神奇,我认为如果没有某种逻辑,您将无法跳过非数字列。

如果您可以选择添加虚拟列,则可以使用 by 在整个表中进行聚合。

看起来像这样:

bdata = bz.Data([('fnord', 1, 'Alice', 100.9, 100),
           ('fnord', 2, 'Bob', 200.6, 200),
           ('fnord', 3, 'Charlie', 300.45, 300),
           ('fnord', 5, 'Edith', 400, 400)],
          fields=['dummy', 'id', 'name', 'revenue', 'profit'])
bz.by(bdata.dummy, avg_profit=bdata.profit.mean(), avg_revenue=bdata.revenue.mean())

   dummy  avg_profit  avg_revenue
0  fnord         250     250.4875

尽管这也不是特别简洁,并且需要修改您的数据。

您可以使用 odo 快速访问简洁的 Pandas 语法:

from odo import odo
import Pandas as pd
odo(bdata, pd.DataFrame).mean()

关于python blaze计算多列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860649/

相关文章:

python - 在 Numpy 中生成唯一的随机值

python - 全局名称 'inf' 未定义

python - 来自数据帧的神经网络 LSTM 输入形状

python - rpyc: root.getmodule ("module_name")和手动返回模块引用之间的区别?

python - Concat 未按预期工作

python - 使用odo将数据迁移到SQL

python - pydata 火焰 : does it allow parallel processing or not?

python - 如何使用 sqlite 后端为 python blaze 提供用户定义的函数?

python - 匹配列表中的项目 - Python

Python cmd 模块 - 异步事件后恢复提示