import scipy.stats as ttest_1sampimport csvdef z(name,horizon,vertical):#定义读取文件的函数
fo=open(name,"r")
z=fo.readlines()
n=eval(input("请输入进行的实验次数,3-10次:"))
m=0#判断实验次数是否符合要求,能否继续运行
for i in range(3,11):
if n==i:
m=1
while m!=1:
print("实验次数不在3-10之间,请重新输入!") n=eval(input("请输入实验次数,实验次数需要为3—10次:"))
for i in range(3,11):
if n==i:
m=1
breakdef zxd():#定义选择置信度的函数
print("置信度为90%请输入1")
print("置信度为95%请输入2")
print("置信度为99%请输入3")
a=eval(input("请选择需要的置信度:"))
return(a)
zlfs = []
zlfs = input("请输入每次实验得到的质量分数:")
zlfs = zlfs.split(" ") # 判断输入的质量分数个数是否和试验次数一致,不一致,则重新输入while len(zlfs) != n:
print("您输入的质量分数个数与试验次数不符,请重新输入!")
zlfs = []
zlfs = float(input("请输入每次实验得到的质量分数:"))
zlfs = zlfs.split(" ")
a = zxd() # 选择置信度
m = 0 # 检验输入是否符合要求
for i in range(1, 4):
if a == i:
m = 1
while m != 1:
print("输入错误,请重新输入!")
a = zxd() f
or i in range(1, 4):
if a == i:
m = 1
break
while
len(zlfs) == n:
x = sorted(zlfs)
break
with open("Q值.csv") as csvfile:
reader = csv.reader(csvfile)
g = [row[n - 1] for row in reader] # 取出对应的Q值
T = float(g[(a + 1)])
sum = 0
for n in x:
if isinstance(n, float):
sum += n
y = float(sum / len(x) ) # 求出平均值
f = max(x) # 最大值
j = min(x) # 最小值
f=float(f)
j=float(j)
if abs(f-y) > abs(j-y): # 绝对值比较
k = list(map(str, x))
l = float(k[-2])
Q = float(f - l) / float(f - j) # 计算Q值
if Q > T:
del x[-1] # 删除离群值
print(x)
else:
print('保留')
elif abs(f - y) < abs(j - y):
k = list(map(str, x))
l = k[1]
Q = float(j - l) / float(f - j)
if Q > T:
del x[0]
print(x)
else:
print('保留')
else:
print("无离群值")