用python计算数据的方差_用python求数据表中数据的均值与方差
展开全部
以下为代码:
numstr = input("请输入全部数据:用英文逗号(,),中文逗号(,),\
在空格位置上( )或使用tab键操作(将换行视为一种统一的分隔数据:)时,请确保一次性复制粘贴。
if "," in numstr:
numlist = numstr.split(",")
elif "," in numstr:
numlist = numstr.split(",")
elif "\t" in numstr:
numlist = numstr.split("\t")
elif "\n" in numstr:
numlist = numstr.split("\n")
elif " " in numstr:
numlist = numstr.split(" ")
else:
numlist = [numstr]
numlist = list(map(lambda x:x.strip(",").strip(",").\
strip("\t").strip("\n").strip(" "), numlist))
for i in numlist.copy():
try:
a = float(i)
except:
numlist.remove(i)
print("已过滤字符串:%s"%i)
#好了,上面很多只是方便用户而已(但还是有一些有用的),主要是下面
numlist = list(map(lambda x:float(x), numlist))#所有字符串转为浮点
print("最终数列:",numlist)#输出最终数列,进行核对
average = sum(numlist)/len(numlist)#用数列和除以出列长度得到平均数
variance = 0#方差,先记为0
for i in numlist:#遍历列表
variance += (i - average) ** 2#反正就是公式对吧,先加进去
variance /= len(numlist)#还是公式,那一长串还得除以一个数列长度
print("均值:%.2f\n方差:%.2f"%(average, variance))#分两行输出
以下为输出效果:
请按照指定格式正确输入以下数据:通过一次复制操作完成
已过滤字符串:
最终数列: [38.0, 22.0, 99.0, 10.0, 99.0, 7.0, 25.0, 40.0]
均值:42.50
方差:1181.75
以下为解析:
平均值的计算方式是将所有数值相加后除以数据点的数量;方差的计算方法是先求出每个数据点与均值之差平方后再累加求和,并最终将该平方和除以数据点的数量即可得到结果
本程序的优点:在输入时逗号后留有空格及不小心多打逗号等情况都不会出现任何问题;能够处理小数,并且便于核对结果。
