Python小白的学习日志:实验数据处理

在分析化学中,经常遇到实验数据处理的情况,一般比较多的就是计算平均值,相对标准偏差(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]))

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值