如何在不导入的情况下计算 Python 中的四分位数
How to calculate quartiles in Python without import
我有一个学校项目,我们需要在 python 中计算列表的四分位数(列表应该既可以是偶数列表,也可以是非奇数列表)。我不允许使用 import (exept math.floor/math.ceil) 来简化操作。我只是无法让它工作,因为我有时会得到一个正负 0.5 的值。 (所以如果我想要 3 作为示例,我会得到 2.5 或 3.5,具体取决于列表中数字的组合和数量)
有什么建议吗?
到目前为止,我的代码如下所示:
def quartile_one(x):
x.sort()
k = 0
if (len(x)%2) == 0:
k = (math.floor((len(x) + 1)*0.25))
return ((x[k - 1]) + (x[k]))/2
else:
k = (math.floor((len(x) + 1)*0.25))
return x[k - 1]
def quartile_three(x):
x.sort()
k = 0
if (len(x)%2) == 0:
k = (math.floor(len(x)*0.75))
return (((x[k - 1]) + (x[k]))/2)
else:
k = (math.floor(len(x)*0.75))
return x[k - 1]
x = [1,2,3,4,5,6,7,8,9]
print(quartile_one(x))
print(quartile_three(x))
(预期输出:2.5 和 7.5)
谢谢!
抱歉语法错误。
第一和第三四分位数的位置不取决于 N/2,它们取决于 N/4。这应该产生正确的数字。我附上一张图表,显示四分位点的位置:
import math
# 1 2 3 4 5 6
# ^ ^ ^
# 1 2 3 4 5 6 7
# ^ ^ ^
# 1 2 3 4 5 6 7 8
# ^ ^ ^
# 1 2 3 4 5 6 7 8 9
# ^ ^ ^
def quartile_one(x):
x.sort()
k = len(x) // 4
if len(x) % 4 < 2:
return (x[k-1] + x[k])/2
else:
return x[k-1]
def quartile_three(x):
x.sort()
k = 3 * len(x) // 4
if len(x) % 4 < 2:
return (x[k] + x[k+1])/2
else:
return x[k]
x = [1,2,3,4,5]
for z in (6,7,8,9):
x.append(z)
print(x)
print(quartile_one(x))
print(quartile_three(x))
我有一个学校项目,我们需要在 python 中计算列表的四分位数(列表应该既可以是偶数列表,也可以是非奇数列表)。我不允许使用 import (exept math.floor/math.ceil) 来简化操作。我只是无法让它工作,因为我有时会得到一个正负 0.5 的值。 (所以如果我想要 3 作为示例,我会得到 2.5 或 3.5,具体取决于列表中数字的组合和数量) 有什么建议吗?
到目前为止,我的代码如下所示:
def quartile_one(x):
x.sort()
k = 0
if (len(x)%2) == 0:
k = (math.floor((len(x) + 1)*0.25))
return ((x[k - 1]) + (x[k]))/2
else:
k = (math.floor((len(x) + 1)*0.25))
return x[k - 1]
def quartile_three(x):
x.sort()
k = 0
if (len(x)%2) == 0:
k = (math.floor(len(x)*0.75))
return (((x[k - 1]) + (x[k]))/2)
else:
k = (math.floor(len(x)*0.75))
return x[k - 1]
x = [1,2,3,4,5,6,7,8,9]
print(quartile_one(x))
print(quartile_three(x))
(预期输出:2.5 和 7.5)
谢谢!
抱歉语法错误。
第一和第三四分位数的位置不取决于 N/2,它们取决于 N/4。这应该产生正确的数字。我附上一张图表,显示四分位点的位置:
import math
# 1 2 3 4 5 6
# ^ ^ ^
# 1 2 3 4 5 6 7
# ^ ^ ^
# 1 2 3 4 5 6 7 8
# ^ ^ ^
# 1 2 3 4 5 6 7 8 9
# ^ ^ ^
def quartile_one(x):
x.sort()
k = len(x) // 4
if len(x) % 4 < 2:
return (x[k-1] + x[k])/2
else:
return x[k-1]
def quartile_three(x):
x.sort()
k = 3 * len(x) // 4
if len(x) % 4 < 2:
return (x[k] + x[k+1])/2
else:
return x[k]
x = [1,2,3,4,5]
for z in (6,7,8,9):
x.append(z)
print(x)
print(quartile_one(x))
print(quartile_three(x))