如何计算熊猫数据框列中的值的比率?

我是 Pandas 的新手,并决定通过使用我从我最喜欢的游戏 API 中提取的一些数据来学习它。我有一个包含两列“playerId”和“winner”的数据框,如下所示:

playerStatus:
______________________
   playerId   winner
0    1848      True
1    1988      False
2    3543      True
3    1848      False
4    1988      False
...

每行代表玩家参与的一场比赛。我的目标是转换此数据框或创建一个新数据框,以便计算每个 playerId 的获胜百分比。例如,上面的数据框将变为:

playerWinsAndTotals
_________________________________________
   playerId   wins  totalPlayed   winPct
0    1848      1        2         50.0000
1    1988      0        2         0.0000
2    3543      1        1         100.0000
...

阅读 pandas 文档花了很长时间,但我实际上通过创建两个不同的表(一个用于查找每个玩家的获胜次数,一个用于查找每个玩家的总游戏数)并合并它们来实现这一点,然后取胜场数与比赛场数之比。

创建“胜利”数据框:

temp_df = playerStatus[['playerId', 'winner']].value_counts().reset_index(name='wins')
onlyWins = temp_df[temp_df['winner'] == True][['playerId', 'wins']]
onlyWins
_________________________
    playerId    wins
1     1670       483
3     1748       474
4     2179       468
6     4006       434
8     1668       392
...

创建“总计”数据框:

totalPlayed = playerStatus['playerId'].value_counts().reset_index(name='totalCount').rename(columns={'index': 'playerId'})
totalPlayed
____________________

   playerId   totalCount
0    1670        961
1    1748        919
2    1872        877
3    4006        839
4    2179        837
...

最后,合并它们并添加“winPct”列。

playerWinsAndTotals = onlyWins.merge(totalPlayed, on='playerId', how='left')
playerWinsAndTotals['winPct'] = playerWinsAndTotals['wins']/playerWinsAndTotals['totalCount'] * 100
playerWinsAndTotals
_____________________________________________

   playerId   wins   totalCount     winPct
0    1670      483      961       50.260146
1    1748      474      919       51.577802
2    2179      468      837       55.913978
3    4006      434      839       51.728248
4    1668      392      712       55.056180
...

现在,我在这里发布这篇文章的原因是我知道我没有充分利用 Pandas 提供的功能。创建和合并两个不同的数据帧只是为了找到玩家获胜的比率似乎没有必要。我觉得我走的是“风景”路线。

对于比我更有经验的人,你会如何解决这个问题?

以上是如何计算熊猫数据框列中的值的比率?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>