python - Groupby Pandas 中的条件计数
问题描述
我有一个数据框,其中包含股票代码和各种日期的模型准确性,如下所示:
ZAYO 20170228 0.203997
ZAYO 20170531 0.180037
ZAYO 20170831 0.110623
ZBH 20170131 0.130060
ZBH 20170430 0.115384
ZBH 20170731 0.065990
AAAP 20170331 1.075765
AAAP 20170630 1.119365
AAAP 20170930 0.223602
AAL 20170131 0.338255
AAL 20170430 0.386442
AAL 20170731 0.171351
我想创建一个摘要数据框,其中每行包含代码名称、平均准确度、准确度高于 20 的时间百分比、准确度高于 50% 的时间百分比。
我用
dfGrouped = df.groupby(['tickers'])
dfGrouped.Accuracy.mean()
获得平均准确度,但不确定一种干净的方法来计算特定代码的准确度超过 20%、50% 的次数。
解决方案
groupby.agg
与计算字典一起使用:
from collections import OrderedDict
df.columns=['ticker', 'date', 'accuracy']
groupers = OrderedDict([('mean', np.mean),
('>_0.20_pct', lambda x: (x > 0.20).sum()/len(x)),
('>_0.50_pct', lambda x: (x > 0.50).sum()/len(x)),
('>_0.70_pct', lambda x: (x > 0.70).sum()/len(x))])
res = df.groupby('ticker')['accuracy'].agg(groupers)
print(res)
mean >_0.20_pct >_0.50_pct >_0.70_pct
ticker
AAAP 0.806244 1.000000 0.666667 0.666667
AAL 0.298683 0.666667 0.000000 0.000000
ZAYO 0.164886 0.333333 0.000000 0.000000
ZBH 0.103811 0.000000 0.000000 0.000000
推荐阅读
- hibernate - 数据服务更新给出 HHH000346:托管刷新期间出错 [null]
- python - 追加到字典,Python
- python - 在python中查找NOT BINARY TREEE的高度和深度
- python - 如果字典中的标志为真,如何将文件从一个文件夹复制到另一个文件夹
- java - 根据进一步的条件向标准添加多个参数
- mysql - 返回已启动和已解决案例 sql 表
- python - 单独自定义 matplotlib 刻度标签
- api-platform.com - Api 平台,仅用于计算的实体,未与数据库链接 -> 标识符配置无效
- python - Try / except 在读取 json 时对 UnicodeEncodeError: 'UCS-2' 不起作用
- python - 如何聚合基本上包含相同信息但因区分大小写而被隔离的数据框列