我有一个形状为1.5M x 128的数据框。我做了以下操作:
有人可以推荐我尝试加速的方法吗?
我尝试使用 Python 多进程池(8个进程)将子组划分为相等集合以进行处理,但最终出现了一些 pickling 错误...
谢谢。
- 基于6列进行groupby()。这样创建了大约8700个子组,每个子组的形状为538 x 122。
- 在每个子组上运行apply()函数。该函数计算每个分类值在每列(即122)中的百分比频率。
<df = 从文件中读取数据框>
g = df.groupby(grp_cols)
g[nongrp_cols].apply(lambda d: d.apply(lambda s: s.value_counts()) / len(d.index))
代码对我来说可以正常工作,现在我正在对其进行性能优化。 apply() 函数需要大约20-25分钟才能运行。我认为问题在于它对每个子组进行了122次(即每列)迭代,而不是最佳方式(考虑到我编写的方式)。有人可以推荐我尝试加速的方法吗?
我尝试使用 Python 多进程池(8个进程)将子组划分为相等集合以进行处理,但最终出现了一些 pickling 错误...
谢谢。