使用 Pandas DataFrame 计算百分比
Posted
技术标签:
【中文标题】使用 Pandas DataFrame 计算百分比【英文标题】:Calculate Percentage using Pandas DataFrame 【发布时间】:2020-12-25 21:30:51 【问题描述】:在这 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)
这是如何得到答案的......现在我需要把它拉到情节中,我想把它放在馅饼里
【问题讨论】:
此外,我还合并了多个文件……我不知道合并与否是个好主意…… 【参考方案1】:我没有你所拥有的确切数据集。我正在用类似的数据集进行解释。尝试添加一个列,其中包含跨行的奖牌总和。然后通过将所有行除以整列的总和来找到百分比。
我将其发布为模型检查此
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
希望清楚
【讨论】:
我尝试添加我对 *** 不熟悉的代码...不知道添加我尝试过但无法添加的代码...您的意思是在代码中尝试对它进行总结 终于明白了...请帮助兄弟...我3周前才开始学习pyton,所以我可能会问一个菜鸟问题 我能够对列求和,但无法得到百分比 @SaudAnsari 我感谢您有兴趣学习不要犹豫提问。快乐学习。 @SaudAnsari 顺便编辑你的问题标题。如何通过在 pandas 数据框中添加列来添加百分比列。【参考方案2】:假设您已将 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
【讨论】:
如果您对我发布的答案有任何疑问,请告诉我。如果答案解决了您的问题,您可能想了解当有人answers您的问题时该怎么做。 另外,您可能希望查看读取多个 excel 文件并创建单个数据框。不知道为什么在您已经完成单个数据的同时合并了已处理的数据。看here的例子 ....谢谢你的回答....我把它们结合起来了其中......以上是关于使用 Pandas DataFrame 计算百分比的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用rstrip函数和astype函数将dataframe中的百分比字符串转化为数值数据 (transform percent strings into numeric values)