获取基于另一列pands python的分组值的百分比

2024-04-16 14:59:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个专栏在我的文章中。类别和金额。我的数据如下所示:

category          amount
home              20
home              10
fashion           20
fashion           10
celebrity         30
celebrity         40

我想对category列进行分组,并获得每个类别的总和。我还需要知道每个类别的百分比

预期产出: home 30 - 23% etc

我的代码:

dict(df.groupby(['category'])['amount'].sum().sort_values(ascending=False))

输出: home 30 fashion 30 celebrity 70


Tags: 数据代码home文章etc类别金额amount
2条回答

我首先创建一个“百分比”列:

df['percent'] = df['amount'] / sum(df['amount'])

然后,您可以按类别分组并获得所需的输出,四舍五入到小数点后2位:

df.groupby(['category']).sum().round(2)

输出将是:

          amount    percent
category
    
celebrity   70          0.54
fashion     30          0.23
home        30          0.23

根据您的业务案例,在将来的计算中使用“百分比”列可能会很有价值。因此,将该列作为数据集的一部分可能是合理的

groupby、agg sum并计算结果总和的百分比

 g=df.groupby('category').agg(Sum=('amount','sum')).reset_index()#Calculate sum

g.assign(per=(g.Sum/(g.Sum.sum())*100).astype(int))#Calc the Percentage

    category  Sum  per
0  celebrity   70   53
1    fashion   30   23
2       home   30   23

相关问题 更多 >