Python 基于GPU的表分组操作组合解析器
给定一个包含许多列的表Python 基于GPU的表分组操作组合解析器,python,pandas,gpu,pandas-groupby,cudf,Python,Pandas,Gpu,Pandas Groupby,Cudf,给定一个包含许多列的表 |-------|-------|-------|-------| | A | B | .. | N | |-------|-------|-------|-------| | 1 | 0 | .. | X | | 2 | 0 | .. | Y | | .. | .. | .. | .. | |-------|-------|-------|-------|
|-------|-------|-------|-------|
| A | B | .. | N |
|-------|-------|-------|-------|
| 1 | 0 | .. | X |
| 2 | 0 | .. | Y |
| .. | .. | .. | .. |
|-------|-------|-------|-------|
迭代所有列组合(所有长度)并执行分组操作的最有效方法是什么?由于表格和特别是组合可能相当大(2^n),最好使用
这个表有多大?比如说超过100列。因此,与其说是按性能分组,不如说是按100列评估的组合,你要选择100个选择2+100个选择3+。。。100选择99个通话至groupby。这看起来是10^30级。如果每个内核调用连续运行,甚至只需要一纳秒,那么您仍然需要等待10^21秒(永远)。即使您可以并发运行一百万个线程,并且每个线程仍然在一纳秒内完成,您也需要等待10^15秒(永远)。为了获得成功,您可能需要重新定义此问题。谢谢@NickBecker,超级有效的分数。有一些贪婪的方法和选择尽早消除分支,但希望使问题简单易懂,并将重点放在GPU加速上。
colnames = df.columns
for L in range(2,len(colnames)):
for comb in itertools.combinations(colnames, L):
dfg = df.groupby(comb, sort=False).size().reset_index().rename(columns={0:'count'})