groupby + cut,或 qcut, 或 rank 都可以实现你for 中的方法,而且更快。至少快十倍。
在python中如果要用for,那么最好 import numba 库, @JIT @Vector 等方法优化先。 你用的是DataFrame, 但是@JIT不能提高性能,必须再@vector 方法还是蛮复杂的。
我之前在知乎分享过一个用Python分析证券投资最高收益, 最大规模,最小风险的文章。 https://zhuanlan.zhihu.com/p/33532029
里面相关的思路如下:
grp_rank = grp.agg({"TurnoverValue":recent_mean})
TV_rank = pd.cut(grp_rank.TurnoverValue,bins=5*np.logspace(7,11,5),labels=["5亿","50亿","500亿","5000亿"])
当时也碰到了不能直接用Groupby 的情况。 其实根本的原因是 没有定义清楚问题或者说数据分析的维度。 例如:是先groupby ,还是先cut先后次序
|