在Python中按阈值计算和计算每列的百分比

ahb*_*bon 3 python pandas

如果我有以下数据帧:

studentId   sex     history    english    math    biology
    01      male       75         90       85        60
    02     female      85         80       95        70
    03      male       55         60       78        86
    04      male       90         89       76        80  
Run Code Online (Sandbox Code Playgroud)

我想得到一张新表,显示每个科目分数的百分比高于80的阈值(包括80).例如,历史上有两个学生的分数高于80,因此历史的百分比是2/4 = 50%.有人可以用Python帮助我吗?谢谢.

history        50%
english        75% 
math           50%
biology        50%
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 8

使用:

s = df.iloc[:, 2:].ge(80).mean().mul(100)
print (s)
history    50.0
english    75.0
math       50.0
biology    50.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)

说明:

首先按位置选择必要的列DataFrame.iloc:

print (df.iloc[:, 2:])
   history  english  math  biology
0       75       90    85       60
1       85       80    95       70
2       55       60    78       86
3       90       89    76       80
Run Code Online (Sandbox Code Playgroud)

然后通过DataFrame.ge(>=)进行比较:

print (df.iloc[:, 2:].ge(80))
   history  english   math  biology
0    False     True   True    False
1     True     True   True    False
2    False    False  False     True
3     True     True  False     True
Run Code Online (Sandbox Code Playgroud)

通过以下方式得到mean多个:100DataFrame.mul

print (df.iloc[:, 2:].ge(80).mean().mul(100))
history    50.0
english    75.0
math       50.0
biology    50.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)