[英]How to calculate percentage with Pandas' DataFrame
How to add another column to Pandas' DataFrame with percentage?如何以百分比向 Pandas 的 DataFrame 添加另一列? The dict can change on size. dict 可以改变大小。
>>> import pandas as pd
>>> a = {'Test 1': 4, 'Test 2': 1, 'Test 3': 1, 'Test 4': 9}
>>> p = pd.DataFrame(a.items())
>>> p
0 1
0 Test 2 1
1 Test 3 1
2 Test 1 4
3 Test 4 9
[4 rows x 2 columns]
If indeed percentage of 10
is what you want, the simplest way is to adjust your intake of the data slightly:如果您确实想要10
百分比,那么最简单的方法是稍微调整您的数据摄入量:
>>> p = pd.DataFrame(a.items(), columns=['item', 'score'])
>>> p['perc'] = p['score']/10
>>> p
Out[370]:
item score perc
0 Test 2 1 0.1
1 Test 3 1 0.1
2 Test 1 4 0.4
3 Test 4 9 0.9
For real percentages, instead:对于实际百分比,改为:
>>> p['perc']= p['score']/p['score'].sum()
>>> p
Out[427]:
item score perc
0 Test 2 1 0.066667
1 Test 3 1 0.066667
2 Test 1 4 0.266667
3 Test 4 9 0.600000
First, make the keys of your dictionary the index of you dataframe:首先,将字典的键作为数据框的索引:
import pandas as pd
a = {'Test 1': 4, 'Test 2': 1, 'Test 3': 1, 'Test 4': 9}
p = pd.DataFrame([a])
p = p.T # transform
p.columns = ['score']
Then, compute the percentage and assign to a new column.然后,计算百分比并分配给新列。
def compute_percentage(x):
pct = float(x/p['score'].sum()) * 100
return round(pct, 2)
p['percentage'] = p.apply(compute_percentage, axis=1)
This gives you:这给你:
score percentage
Test 1 4 26.67
Test 2 1 6.67
Test 3 1 6.67
Test 4 9 60.00
[4 rows x 2 columns]
df=pd.read_excel("regional cases.xlsx")
df.head()
REGION CUMILATIVECOUNTS POPULATION
GREATER 12948 4943075
ASHANTI 4972 5792187
WESTERN 2051 2165241
CENTRAL 1071 2563228
df['Percentage']=round((df['CUMILATIVE COUNTS']/ df['POPULATION']*100)*100,2)
df.head()
REGION CUMILATIVECOUNTS POPULATION Percentage
GREATER 12948 4943075 26.19
ASHANTI 4972 5792187 8.58
WESTERN 2051 2165241 9.47
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.