在回答“未参加考试准备课程的女性中有多少未通过数学考试?”的问题时,她写道:
len(df[(df["test preparation"] == "none") & (df["math score"] < passmark) & (df.gender == "female")])/len(df[(df["test preparation"] == "none") & (df.gender == "female")])
这里的一切都是正确和真实的。
df["test preparation"] == "none" - не проходившие курс подготовки
df["math score"] < passmark - не сдавшие экзамен
df.gender == "female" - женщины
但是我看到了这个结构,它也是正确的:
df[(df['test preparation'] == 'none') & (df['gender'] == 'female')]['math score'] < passmark).mean()
这不是我第一次看到这样的设计。它很短,令人赏心悦目。帮我弄清楚它是如何制作的。我真的不明白这段话:
& (df['gender'] == 'female')](не понимаю вот этот переход)['math score'] < passmark)
谢谢!
这里所需的列取自数据。然后这里使用了 Python 的特性,布尔值
True被False感知为数字 1 和 0。因此,如果为真,则条件的值为 1,如果为假,则为 0。好吧,然后我们数数mean- 我们将 1 和 0 相加,然后除以它们的总数。那些。等于满足的条件数除以行数。那是相同的份额。