如何在Pandas DataFrame中计算百分比

17 投票
4 回答
143957 浏览
提问于 2025-04-18 05:49

如何在Pandas的DataFrame中添加一列显示百分比?这个字典的大小可以变化。

>>> 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]

4 个回答

0

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能会在使用某个功能时,发现它并没有按照预期工作,或者出现了一些错误信息。

在这种情况下,最好的办法就是仔细阅读错误信息,看看它们提供了什么线索。很多时候,错误信息会告诉我们哪里出了问题,或者缺少了什么。我们可以根据这些提示去查找解决方案,或者在网上搜索相关的帮助。

此外,向其他人请教也是一个不错的选择。无论是在论坛上发帖,还是向朋友求助,大家的经验和建议都可能帮助我们更快地找到问题的解决办法。

总之,遇到问题时不要慌张,冷静下来,仔细分析,寻找信息和帮助,通常都能找到解决的办法。

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
1
import pandas as pd
 
data = {'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# calculate percentage using apply() method and lambda function
 
df['B_Percentage'] = df['B'].apply(lambda x: (x / df['B'].sum()) * 100)
 
print(df)

使用lambda函数是很有用的。其实还有其他方法可以做到这一点。也许这个链接会对你有帮助 http://www.pythonpandas.com/how-to-calculate-the-percentage-of-a-column-in-pandas/

7

首先,把你的字典的键设置为数据框的索引:

 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']

然后,计算百分比,并把结果放到一个新列里。

 def compute_percentage(x):
      pct = float(x/p['score'].sum()) * 100
      return round(pct, 2)

 p['percentage'] = p.apply(compute_percentage, axis=1)

这样你就得到了:

         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]
43

如果你确实想要的是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

如果想要真实的百分比,接下来可以这样做:

>>> 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

撰写回答