【问题标题】:Grouping columns and extracting statistics in Python 3在 Python 3 中对列进行分组和提取统计信息
【发布时间】:2019-04-17 23:37:45
【问题描述】:

我正在使用 NBA Draft 数据框,可以通过 here 获取并使用 pandas 读取。

看起来是这样的:

              Player  Position   ID         Draft Year Projected SPM Superstar  Starter Role Player Bust
0   Karl-Anthony Towns  C   karl-anthony-towns  2015    1.030606    0.134767    0.427183    0.163083    0.274967
1   Justise Winslow     SF  justise-winslow     2015    0.875329    0.083529    0.510905    0.176767    0.228800
2   Stanley Johnson     SF  stanley-johnson     2015    0.679493    0.067800    0.423733    0.278500    0.229967
3   Jahlil Okafor       C   jahlil-okafor       2015    0.521661    0.058717    0.409900    0.235533    0.295850
4   D`Angelo Russell    PG  d-angelo-russell    2015    0.511967    0.152033    0.342283    0.096583    0.409100

现在我正在尝试按position 列分组,并获取每个draft year 中的玩家人数。同时我想显示superstar 列的中位数。

这是我目前的代码:

data['Median'] = data['Superstar'].median()
data[data['Draft Year']>=2015].groupby('Position').count()

但我认为这不是在大喊我想要的。有人可以指点我正确的方向吗?

提前谢谢你

【问题讨论】:

  • 您需要按职位和选秀年份分组
  • 是的,但我如何在同一个句子中获得计数和中位数?还是我必须分开做?因为当我用count 方法结束它时,我得到了所有列的计数,所以我不能得到中位数

标签: python python-2.7 pandas dataframe group-by


【解决方案1】:

您可以groupby 并使用agg

df.groupby(['Position', 'Draft Year']).agg({'Superstar':'median', 'Player':'count'})

                           Superstar    Player
Position    Draft Year      
C            2015           0.096742       2
PG           2015           0.152033       1
SF           2015           0.075664       2

或者你可以创建一个函数

def my_agg(x):
    names = {
        'Superstar Median': x['Superstar'].median(),
        'Player Count': x['Player'].count(),
    }

    return pd.Series(names, index=['Superstar Median', 'Player Count'])

df.groupby(['Position', 'Draft Year']).apply(my_agg)

                        Superstar Median    Player Count
Position    Draft Year      
C             2015          0.096742           2.0
PG            2015          0.152033           1.0
SF            2015          0.075664           2.0

【讨论】:

  • 很好的答案克里斯,这就是我真正想要的。非常感谢!! :)
  • @Miguel2488 从技术上讲,可能有同名球员在同一个位置,所以你可能想计算ID,而不是像我在我的例子中那样计算Player
  • 不,克里斯,没关系,我想看看球员的名字被重复了多少次,看看他们是否在不同的位置上比赛,这样就可以了。谢谢!!
猜你喜欢
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多