ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2624|回复: 2

[求助] 关于在Power Query中请加权平均的优化问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-22 20:27 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位好,先说一下我的需求:
如何优化我下面的步骤,减少运行时间?

问题描述如下:

我有一个大约20多W行的表(大约30M大小),先和另外一个差不多同样行数的表进行了一次合并查询。得到下表:
1.png

现在我需要求加权平均,具体要求是这样:

A列是主键,每个主键都有好几行是一样的;
现在要将A列每个主键整合为1行,对应的,要把同样主键(A列)的N列根据M列的权重算一个加权平均值出来。
举个例子,假如A列有一个值有3行(例如都是“2020/1/1 0:00:00-249A-10“),这3行的M列分别100,200,300,N列分别为1,2,3 ;现在要把这三列整合为1列,并且得到一个这样数值:需求数字=(1*100+2*200+3*300)/(100+200+300)

为了达到上述目的,我的做法是这样的:
1)复制这个表一次;
2)在原表中新增一列K=M*N;
3)原表进行分组,根据A列分组,新增一列X=K列之和
4)在复制表中进行分组,根据A列分组,新增一列Y=N列之和;
6)原表和复制表进行联合查询(根据A列),然后合成的表计算X/Y,也就是我要的加权平均。

这个计算过程没有问题,但是非常的慢,我觉得应该是因为表很大,然后又经历了两次合并查询,两次分组。每次都有将近20W行,但是其中相同A列的最多也就是3-4行,这种计算效率非常低。有什么办法优化一下吗?
经常看到网上说Power Query处理几十万行的数据都没问题,我这里这样算一下,i5的CPU运行一次要好几分钟,每次加一个步骤也好慢。

说明一下:我这里不能使用Power Pivot,因为使用PP处理后的表格只能做数据透视表了,没法做为数据源再放到Power Query里面处理了。
如果使用Power Query实在不合适的话,用什么合适?Access ,Python?



TA的精华主题

TA的得分主题

发表于 2020-2-22 22:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
按你现在的方法得出的结果的有效列只有A列和平均值那列?
如果是这样,一步分组就可以完美实现呀,调整第三参数就可以了
Table.Group(原表,"A列",{"平均值",each List.Sum(List.Transform(List.Zip({[M],[N]}), (x)=>x{0}*x{1}))/List.Sum([M])})

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-2 23:17 | 显示全部楼层
wdx223 发表于 2020-2-22 22:16
按你现在的方法得出的结果的有效列只有A列和平均值那列?
如果是这样,一步分组就可以完美实现呀,调整第 ...

你好,您这个方法确实很棒!为我指点迷津了。

但是有一点我还在想,为什么要用List.Zip实现一个类似乘法的效果呢?不可以两列直接相乘吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 06:58 , Processed in 0.040094 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表