如何使用Pandas的DataFrame计算百分比

use*_*828 11 python pandas

如何用百分比向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]
Run Code Online (Sandbox Code Playgroud)

Foo*_*Bar 23

如果确实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
Run Code Online (Sandbox Code Playgroud)

对于实际百分比,相反:

>>> 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
Run Code Online (Sandbox Code Playgroud)


joe*_*.ct 6

首先,使字典的键成为数据框的索引:

 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']
Run Code Online (Sandbox Code Playgroud)

然后,计算百分比并分配给新列。

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

 p['percentage'] = p.apply(compute_percentage, axis=1)
Run Code Online (Sandbox Code Playgroud)

这给您:

         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]
Run Code Online (Sandbox Code Playgroud)