[分享] 数据分析数据抽样无重复-可全抽样

  [复制链接]
查看116347 | 回复124 | 2021-2-19 03:39:06 | 显示全部楼层 |阅读模式
今天学习数据分析,数据抽样这一块,用Excel如果用Data Analysis,很容易做出,python也很容易。
但Power query中并无此函数,只有一次的Number.RandomBetween这个函数取一次样。
查了一下网上的这个多次取样的方案,几乎都是使用 List.Transform嵌套多次抽样,但这样有个问题,抽样的数据可能重复。
有种方法是,多次抽样,List.Distinct后,使用截取前n项得到想要的,个人感觉这样做不科学,如果100个数据,想抽样50甚至更多,有可能最后的数据没有50个,或者100.
现在我有个思路,就是 随机挑选一个后,就在列表种将此元素移除,然后对剩下的列表继续处理。使用递归的方法。
经过多次试验调试,终于成功。
  1. let

  2.   fx = (lst,n) => [f = List.RemoveRange(lst,Number.Round(Number.RandomBetween(1,List.Count(lst)-1)),1),r = (

  3.   if n = 1 then

  4.     {lst{Number.Round(Number.RandomBetween(1,List.Count(lst)-1))}}

  5.       else @fx(f,n-1)[r]&{f{Number.Round(Number.RandomBetween(1,List.Count(@fx(f,n-1)[f])-1))}}

  6.   )

  7. ],

  8.   

  9. Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content][商品编号],

  10. A = fx(Source,4)[r]

  11. in

  12.   A
复制代码
回复

使用道具 举报

有點煙味 | 2021-2-19 03:44:07 | 显示全部楼层
感谢分享
回复

使用道具 举报

VALENTINO974 | 2021-2-19 03:52:07 | 显示全部楼层
list. Sort 配合,number. Random, list就乱序了,取数据,去掉已取的,再乱序,取数据,不知道是不是你要的功能
回复

使用道具 举报

难的糊涂 | 2021-2-19 03:54:07 | 显示全部楼层
list. Sort 配合,number. Random, list就乱序了,取数据,去掉已取的,再乱序,取数据,不知道是不是你要 ...


List.Sort不需要吧! 数据多了速度慢了。
是个多余的。
就直接 比方100个数, 取50个 甚至更多。
第一次 从100个里面取 随机取 1-100排列顺序的一个,然后将此数删除,只剩下99
第二次从99个里面取,随机取1-99排列顺序的一个,然后将此数删除,只剩下98
第三次以此类推,用到递归
回复

使用道具 举报

paul2014 | 2021-5-16 18:38:11 来自手机 | 显示全部楼层
专业抢沙发的!哈哈
回复

使用道具 举报

什么 | 2021-9-1 23:56:50 | 显示全部楼层
是爷们的娘们的都帮顶!大力支持
回复

使用道具 举报

烈火奥拓仔 | 2021-9-13 20:52:57 来自手机 | 显示全部楼层
占坑编辑ing
回复

使用道具 举报

马路流星 | 2021-9-21 18:30:42 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

彬彬有礼 | 2021-10-22 17:49:30 来自手机 | 显示全部楼层
感謝云发教育!!!
回复

使用道具 举报

爱情密码 | 2021-11-12 10:27:05 | 显示全部楼层
发发呆,回回帖,工作结束~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则