为了账号安全,请及时绑定邮箱和手机立即绑定

带熊猫的箱线图、分组、子图、计算/描述性统计、聚合

带熊猫的箱线图、分组、子图、计算/描述性统计、聚合

慕田峪4524236 2021-10-05 17:44:58
假设正在进行多场足球比赛。当球队失去控球权时会生成一个数据点,并且控球时间被记录在一个文本文件中,如下所示:'Game','Country','Team','Ball Possession Interval (sec)' 1,Croatia,A,92,France,B,111,Croatia,A,84,Spain,C,101,Croatia,B,62,France,B,73,Germany,C,122,France,A,8...游戏是一个团队迄今为止玩的游戏数量。例如,2,France,B,7意味着来自法国的 B 队,现在是他们的第 2 场比赛,在 7 秒后刚刚失去控球权。我想要一个按国家分组的图(每个国家的子图),沿轴有球队,以及每支球队每场比赛的“控球间隔(秒)”总和的箱线图。我尝试了以下,df.groupby('Country').boxplot(by='Team',column=*vector of sum of ball possession intervals per game*)但我不知道将列设置为什么。我希望我可以将其设置为以下内容,df.groupby(['Country','Team','Game'])['Ball Possession Interval (sec)'].sum()但它不起作用。有没有一种简单的方法可以做到这一点?
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我已经使用pivot_table了解了我想要的解决方案:

plotdf = df.pivot_table(index=['Country','Team','Game'], values='Ball Possession Interval (sec)', aggfunc=np.sum)

从 pivot_table 的文档中,values是要聚合的列,aggfunc是聚合方法。现在进行分组箱线图...

plotdf.groupby('Country').boxplot(by='Team', column='Ball Possession Interval (sec)')

这是有效的,因为 pivot_table 返回一个适合 boxplot 的数据框对象。

以下不起作用的原因是因为它返回了一个不适合 boxplot, 的系列df.groupby(['Country','Team','Game'])['Ball Possession Interval (sec)'].sum()


查看完整回答
反对 回复 2021-10-05
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信