如何计算学生在 >25th 百分位 <75th 百分位之间的分数,按照分数的递增顺序。使用下面的函数
Posted
技术标签:
【中文标题】如何计算学生在 >25th 百分位 <75th 百分位之间的分数,按照分数的递增顺序。使用下面的函数【英文标题】:How to calculate student got marks between >25th percentile <75th percentile, in the increasing order of marks.use below function 【发布时间】:2020-09-11 19:29:31 【问题描述】:Students=['student1','student2','student3','student4','student5','student6','student7','student8','student9','student10']
Marks = [45, 78, 12, 14, 48, 43, 47, 98, 35, 80]
def display_dash_board(students, marks):
dictionary = dict(zip(Students,Marks))
# write code for computing top top 5 students
print("Top 5 Students are :\n\n")
for key, value in sorted(dictionary.items(), key=lambda item: item[1],reverse=True)[:5]:
print("%s: %s" % (key, value))
# write code for computing top least 5 students
print("\n\n Top Least 5 Students are : \n\n")
for key, value in sorted(dictionary.items(), key=lambda item: item[1])[:5]:
print("%s: %s" % (key, value))
# write code for students within 25 to 75 percentile
print("\n\n Students in 25-75 percentile range are : \n\n")
用于计算百分位数:-
max = max_mark
min = min_mark
diff = max - min
pre_25 = diff*0.25
pre_75 = diff*0.75
display_dash_board(学生,分数)
【问题讨论】:
对我来说看起来像是pandas
的工作。但我假设分配不允许外部库。 :)
@timgeb 它绝对不需要 Pandas。它需要一个列表解析来进行过滤。
@AKX 如果已经计算了百分位数。
@timgeb ... OP 的问题中有代码。
@AKX 是的,所以?我只是说我会用pandas
来解决整个问题。但我意识到这可能是家庭作业,所以我的方法不适用。
【参考方案1】:
鉴于执行百分位数计算的提示,
max_mark = max(marks)
min_mark = min(marks)
diff = max_mark - min_mark
pre_25 = diff * 0.25
pre_75 = diff * 0.75
然后您可以过滤您的字典以仅匹配这些限制的分数,
within_25_75 =
name: score
for (name, score)
in dictionary.items()
if pre_25 <= score <= pre_75
并像以前一样打印它们。
【讨论】:
我想用下面的程序找出百分位数 max = max_mark min = min_mark diff = max - min pre_25 = diff*0.25 pre_75 = diff*0.75 这与这里的过程相同,只是使用了正确的变量。【参考方案2】:一个班轮。因为 1/4 是第 25 个百分位,而 3/4 是第 75 个百分位。
import math
[print(k[0], k[1]) for k in
list(sorted(dictionary.items(), key=lambda item: item[1]))[math.ceil(len(Marks) / 4):math.floor(3 * len(Marks) / 4)]]
#Output
student6 43
student1 45
student7 47
student5 48
说明: 第 25-75 个百分位表示,打印排序列表长度的 1/4 到排序列表长度的 3/4 之间的值。
请注意,我们也使用floor
和ceil
。这是为了确保值严格在第 25 和第 75 个百分位数之间
【讨论】:
写过一次后,你能轻松阅读那行字吗? 没错。但是,如果您在其上方添加评论。它解释了代码中发生的事情。然后它为您带来好处,因为需要管理的代码行更少,复杂性更低。无论如何,对于那些喜欢编写短代码(更少的行)和代码高尔夫的人来说,这只是另一种口味.. 感谢您的建议,但我只想通过给定的百分位数程序找出答案,而不使用 pandas 和 numpy @pravinkamble 我没有使用过它们中的任何一个。代码使用纯python并导入内置数学库。以上是关于如何计算学生在 >25th 百分位 <75th 百分位之间的分数,按照分数的递增顺序。使用下面的函数的主要内容,如果未能解决你的问题,请参考以下文章