python - 基于另一列的每个值的列值总和并将其除以总计
问题描述
今天,我再次在 python 和数据分析方面苦苦挣扎。
我有一个看起来像这样的数据框:
name totdmgdealt
0 Warwick 96980.0
1 Nami 25995.0
2 Draven 171568.0
3 Fiora 113721.0
4 Viktor 185302.0
5 Skarner 148791.0
6 Galio 130692.0
7 Ahri 145731.0
8 Jinx 182680.0
9 VelKoz 85785.0
10 Ziggs 46790.0
11 Cassiopeia 62444.0
12 Yasuo 117896.0
13 Warwick 129156.0
14 Evelynn 179252.0
15 Caitlyn 163342.0
16 Wukong 122919.0
17 Syndra 146754.0
18 Karma 35766.0
19 Warwick 117790.0
20 Draven 74879.0
21 Janna 11242.0
22 Lux 66424.0
23 Amumu 87826.0
24 Vayne 76085.0
25 Ahri 93334.0
..
..
..
这是一个数据框,其中包括一个冠军在一场比赛中的总伤害。现在我想对这些信息进行分组,这样我就可以看到总体上哪个英雄造成的伤害最大。我尝试了 groupby('name') 但它根本不起作用。我已经完成了一些关于 groupby 和 summing values 的线程,但我没有解决我的具体问题。
每个英雄造成的伤害也应该显示为总伤害的百分比。
我正在寻找这样的东西作为输出:
name totdmgdealt percentage
0 Warwick 2378798098 2.1 %
1 Nami 2837491074 2.3 %
2 Draven 1231451224 ..
3 Fiora 1287301724 ..
4 Viktor 1239808504 ..
5 Skarner 1487911234 ..
6 Galio 1306921234 ..
解决方案
我们可以对名称进行分组并得到sum
然后我们将每个值除以总数.div
并乘以 100,.mul
最后将其四舍五入到小数点后.round
:
total = df['totdmgdealt'].sum()
summed = df.groupby('name', sort=False)['totdmgdealt'].sum().reset_index()
summed['percentage'] = summed.groupby('name', sort=False)['totdmgdealt']\
.sum()\
.div(total)\
.mul(100)\
.round(1).values
name totdmgdealt percentage
0 Warwick 343926.0 12.2
1 Nami 25995.0 0.9
2 Draven 246447.0 8.7
3 Fiora 113721.0 4.0
4 Viktor 185302.0 6.6
5 Skarner 148791.0 5.3
6 Galio 130692.0 4.6
7 Ahri 239065.0 8.5
8 Jinx 182680.0 6.5
9 VelKoz 85785.0 3.0
10 Ziggs 46790.0 1.7
11 Cassiopeia 62444.0 2.2
12 Yasuo 117896.0 4.2
13 Evelynn 179252.0 6.4
14 Caitlyn 163342.0 5.8
15 Wukong 122919.0 4.4
16 Syndra 146754.0 5.2
17 Karma 35766.0 1.3
18 Janna 11242.0 0.4
19 Lux 66424.0 2.4
20 Amumu 87826.0 3.1
21 Vayne 76085.0 2.7
推荐阅读
- java - 将 JSON 数组添加到现有的 JSON 文件
- eclipse - 无法在 Eclipse 中到处安装团队资源管理器?
- r - 创建游戏模型的 r 数据框
- python - 如何将代码修改为所需的格式?
- python - 如何填充等高线图掩码并将数据保留在等高线内并将其余部分涂黑
- javascript - 无法遍历 Javascript 对象
- jsp - 如何在 JSP 页面中实现 OWASP CSRF Guard 3.1.0
- oracle - 获取一个月内的销售额
- vb.net - 在 vb.net 项目中,如何检查 SQL 连接是否仍然可用并结束所有处理?
- python - 如果列表值还不是字典键,则从列表中添加字典键