Pandas数据帧过滤器计算

2024-10-01 22:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧

    student_id  gender  major   admitted
0   35377   female  Chemistry   False
1   56105   male    Physics True
2   31441   female  Chemistry   False
3   51765   male    Physics True
4   53714   female  Physics True
5   50693   female  Chemistry   False
6   25946   male    Physics True
7   27648   female  Chemistry   True
8   55247   male    Physics False
9   35838   male    Physics True

我该如何计算女物理专业的录取率?在


Tags: 数据idfalsetrue专业物理genderstudent
3条回答
import numpy as np
np.average(dat['admitted'][(dat['gender']=='female') & (dat['major']=='Physics')].values)

工作原理:(dat['gender']=='female') & (dat['major']=='Physics')创建一个布尔pandas系列,可用于从dat['admitted']系列中选择正确的条目。.values功能将这些条目提取到numpy数组中。最后,我们取这些条目的平均值,得出准入比率。在

import numpy as np
import pandas as pd
df = pd.DataFrame({"gender":np.random.choice(["male","female"],[20]),
                   "admitted":np.random.choice([True,False],[20]),
                   "major":np.random.choice(["Chemistry","Physics"],[20])})

phy_female_admited = df.loc[(df["major"]=="Physics") & (df["admitted"]==True) & ((df["gender"]=="female"))]
phy_female_applied = df.loc[(df["major"]=="Physics") & ((df["gender"]=="female"))]

acceptance_rate = phy_female_admited.shape[0]/phy_female_applied.shape[0]

一个稍微扩展的答案,但基本上与哲里科的方法相同

忽略我创建数据帧的行,而使用您自己的数据

我想-

df_f = df[(df['gender']=='female') & (df['major']=='Physics')]
df_f['admitted'].mean()

第一部分过滤器female和{}。接下来,我们计算mean。在

mean部分听起来既不直观又怪异,但从数学上讲,它会给出百分比值。Python将boolean值视为0和{},所以基本上,如果你用计数求和除以(这是mean)的话,你实际上是在计算Physics专业为Physics的学生中{}的百分比

相关问题 更多 >

    热门问题