我有一个数据,它有股票代码和模型精确的不同日期,如下所示:
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%的次数。
发布于 2018-06-04 14:48:45
将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发布于 2018-06-04 14:45:13
试试这个:
dfGrouped.where(dfGrouped.Accuracy < 0.20).Accuracy.count()https://stackoverflow.com/questions/50683137
复制相似问题