使用Pandas DataFrame计算百分比

问题描述

这5个国家/地区在所有奥运会上赢得的所有奖牌中, 他们每个人赢得的奖牌百分比是多少?

我已使用panda数据框将所有excel文件合并到一个文件中,但现在却无法找到百分比

    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

Combined data sheet

Code that i have tried till now

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)

这是怎么得到的答案。...现在我需要把它放在情节中,我想把它放在馅饼上

解决方法

假设您已将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
,

我没有您所拥有的确切数据集。我正在用相似的数据集进行解释。尝试在各行之间添加一列奖牌总数。然后将所有行除以整列的总和来找到百分比。

我将其发布为模型检查此

import pandas as pd

cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],'ExshowroomPrice': [21000,26000,28000,34000],'RTOPrice': [2200,250,2700,3500]}

df = pd.DataFrame(cars,columns = ['Brand','ExshowroomPrice','RTOPrice'])

            Brand  ExshowroomPrice  RTOPrice
0     Honda Civic            21000      2200
1  Toyota Corolla            26000       250
2      Ford Focus            28000      2700
3         Audi A4            34000      3500




df['percentage']=(df.ExshowroomPrice +df.RTOPrice) * 100
/(df.ExshowroomPrice.sum() +df.RTOPrice.sum())
print(df)



            Brand  ExshowroomPrice  RTOPrice  percentage
0     Honda Civic            21000      2200   19.719507
1  Toyota Corolla            26000       250   22.311942
2      Ford Focus            28000      2700   26.094348
3         Audi A4            34000      3500   31.874203

希望清楚

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...