概述
在分析化学中,经常遇到实验数据处理的情况,一般比较多的就是计算平均值,相对标准偏差(RSD)以及置信区间。
在写置信区间部分的代码的时候,发现python的有个scipy库,scipy库中有很多特殊函数,都是超越函数,即变量之间的关系不能用有限次加、减、乘、除、乘方、开方 运算表示的函数。我这种数学菜鸟,看到scipy库中的函数都发毛,以后有机会慢慢学。
代码如下:
import math
from scipy.stats import t #scipy库中的t分布函数
def calasr(datastr): #将输入的字符串转变为数值,并计算平均值,SD,RSD,返回一个列表
alist=datastr.split('/')
#print(alist)
blist=[]
for i in alist:
floatval=float(i)
blist=blist+[floatval]
sum=0
for each in blist:
sum=sum+each
average=sum/len(blist)
fenmu=0
for each in blist:
fenmu=fenmu+(each-average)*(each-average)
sd=math.sqrt(fenmu/(len(blist)-1))
rsd=round(sd/average*100,4)
resultlist=[average,sd,rsd]
return resultlist
bool=True
while bool==True:
data=input('请输入数据(用“/”隔开)[其他:1.含置信区间;2退出]:')
if data=='2':
bool=False
print('程序运行完毕!')
if data=='1':
datat=input('请输入数据(用“/”隔开):')
percent=input('请输入单侧检验的显著性水平:')
percentval=float(percent)
n=len(datat.split('/'))
f=n-1
fval=int(f)
rlist=calasr(datat)
t=t.isf(percentval,fval) #查t分布表,percentval是单侧t检验的显著性水平,fval是自由度,注意在引入参数的时候,这两个值都必须是数值
ux=t*rlist[1]/math.sqrt(f+1)
print('average=%f,SD=%.4e,RSD=%.4f%%,置信区间为%f±%f(t=%.4f)'%(rlist[0],rlist[1],rlist[2],rlist[0],ux,t)) #格式化输出,实在是很方便
else:
rlist=calasr(data)
print('average=%f,SD=%.4e,RSD=%.4f%%'%(rlist[0],rlist[1],rlist[2]))
最后
以上就是落后大象为你收集整理的Python小白的学习日志:实验数据处理的全部内容,希望文章能够帮你解决Python小白的学习日志:实验数据处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复