楼主: 信息安全iso
238 4

[问答] python量化新手求助:交易量分组求mean [推广有奖]

  • 2关注
  • 0粉丝

本科生

58%

还不是VIP/贵宾

-

威望
0
论坛币
792 个
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
2080 点
帖子
43
精华
0
在线时间
100 小时
注册时间
2016-12-24
最后登录
2018-11-13

信息安全iso 发表于 2018-9-11 11:19:53 |显示全部楼层
有什么函数可以不用for循环,直接将升序的交易量按照group1<group2<group3<group4<group5分成五组,求mean?groupby 和 cut 都没办法解决这个问题

我自己写的for循环

我自己写的for循环

我目前用的笨办法,但是要是数据量大,运行时间就无比长

求助!
谢谢~


stata SPSS
杨Yuer参上 发表于 2018-9-27 20:59:46 |显示全部楼层
我想问一下, 为什么cut无法解决这个问题呢?
回复

使用道具 举报

startyxf 在职认证  发表于 2018-10-2 21:16:05 |显示全部楼层
你先说明一下为什么groupby  cut都不能解决,或者你直接提供demo数据
回复

使用道具 举报

Wang_Yong 发表于 2018-10-28 22:55:38 |显示全部楼层
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先后次序
回复

使用道具 举报

信息安全iso 发表于 2018-11-6 21:26:44 |显示全部楼层
Wang_Yong 发表于 2018-10-28 22:55
groupby + cut,或 qcut, 或 rank 都可以实现你for 中的方法,而且更快。至少快十倍。

在python中如果要用 ...
非常感谢!!
回复

使用道具 举报

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

GMT+8, 2018-11-13 15:25