我有一个具有股票行情自动收录器和各种日期的模型准确性的数据框,如下所示:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句