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

假设正在进行多场足球比赛。当球队失去控球权时会生成一个数据点,并且控球时间被记录在一个文本文件中,如下所示:


'Game','Country','Team','Ball Possession Interval (sec)' 

1,Croatia,A,9

2,France,B,11

1,Croatia,A,8

4,Spain,C,10

1,Croatia,B,6

2,France,B,7

3,Germany,C,12

2,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()

但它不起作用。


有没有一种简单的方法可以做到这一点?


慕田峪4524236
浏览 205回答 2
2回答

慕标琳琳

我已经使用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()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python