当前位置: 首页 > 知识库问答 >
问题:

使用Pandas DataFrame计算百分比

淳于典
2023-03-14

这5个国家在所有奥运会上获得的奖牌中,每个国家获得的奖牌比例是多少?

    Country      Gold     Silver    Bronze  Total
0   USA          10       13         11      34
1   China        2        2          4       8
2   UK           1        0          1       2
3   Germany      12       16         8       36
4   Australia    2        0          0       2
0   USA          9        9          7       25
1   China        2        4          5       11
2   UK           0        1          0       1
3   Germany      11       12         6       29
4   Australia    1        0          1       2
0   USA          9        15         13      37
1   China        5        2          4       11
2   UK           1        0          0       1
3   Germany      10       13         7       30
4   Australia    2        1          0       3
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df= pd.DataFrame()
for f in ['E:\\olympics\\Olympics-2002.xlsx','E:\\olympics\\Olympics- 
2006.xlsx','E:\\olympics\\Olympics-2010.xlsx',
      'E:\\olympics\\Olympics-2014.xlsx','E:\\olympics\\Olympics- 
2018.xlsx']:
data = pd.read_excel(f,'Sheet1')
df = df.append(data)

df.to_excel("E:\\olympics\\combineddata.xlsx")
data = pd.read_excel("E:\\olympics\\combineddata.xlsx")
print(data)

final_Data={}
for i in data['Country']:
x=i
t1=(data[(data.Country==x)].Total).tolist()

print("Name of Country=",i, int(sum(t1)))
final_Data.update({i:int(sum(t1))})


t3=data.groupby('Country').Total.sum()
t2= df['Total'].sum()
t4= t3/t2*100
print(t3)
print(t2)
print(t4)

共有1个答案

佘京
2023-03-14

我们假设您已经将DataFrame创建为'df'。然后,可以执行以下操作,首先对百分比进行分组,然后计算百分比。

df = df.groupby('Country').sum()
df['Gold_percent']   = (df['Gold']   / df['Gold'].sum()) * 100
df['Silver_percent'] = (df['Silver'] / df['Silver'].sum()) * 100
df['Bronze_percent'] = (df['Bronze'] / df['Bronze'].sum()) * 100
df['Total_percent']  = (df['Total']  / df['Total'].sum()) * 100
df.round(2)

print (df)

输出如下:

           Gold  Silver  Bronze  ...  Silver_percent  Bronze_percent  Total_percent
Country                          ...                                               
Australia     5       1       1  ...            1.14            1.49           3.02
China         9       8      13  ...            9.09           19.40          12.93
Germany      33      41      21  ...           46.59           31.34          40.95
UK            2       1       1  ...            1.14            1.49           1.72
USA          28      37      31  ...           42.05           46.27          41.38
 类似资料:
  • 问题内容: 我有4个项目MySQL数据库:(数值),和。 在我的报告中,我需要通过“调查”中的数字来计算已参加调查的“雇员”的百分比。 这是我现在的声明: 表格如下: 我想按参加调查的人数来计算谁所占的百分比。即,如以上数据所示,分别为0%和95%。 问题答案: 尝试这个 在这里演示

  • 我有一个包含4个项的MySQL数据库:(数值)、、和。 在我的中,我需要根据“surveys”中的数字来计算接受调查的“employees”的百分比。 这就是我现在的说法: 下面是表格的原样: 我想根据中的数字计算参加调查的的百分比。即,如上面的数据所示,将为0%,将为95%。

  • 我试图计算数字的百分比(取自一个文本字段),并将计算值设置为另一个表单字段。为此,我尝试了下面的代码,但我发现js正在检测的键事件/小数位数不匹配。 例如,如果我在第一个输入字段中提供100(以计算1.75的百分比),根据我的js代码,我预计是1.75,但在第二个文本字段中是0.175。我知道这是一个非常简单的计算,但我无法解决这个问题。

  • 我连接到一个流,它提供给我+100个加密货币的实时价格(我大约每2秒获得一个新价格)。我想知道,如何计算每个密码价格之间的百分比差异在5分钟的周期,然后更新它每新的一分钟?我正在使用带有本机Websocket连接(不是socket.io)的React。 我想我必须每分钟“节省”(以某种方式)每个密码价格,但我如何才能做到这一点? 出于测试目的,为了查看是否可以每10秒更新一个加密价格,我尝试在套接

  • 问题内容: 如何在SQL中将其转换为小数?下面是方程式,我的答案是78(整数),但实际答案是78.6(带小数点),因此我需要显示此答案,否则报告将不会达到100% 问题答案: 丑陋,但是行得通。

  • 问题内容: 我从这样的数据库中提取了数据(为简单起见,将其简化),我想添加一个称为“百分比”的列。 先感谢您 问题答案: 内部选择得到s的和。