Python帮助计算Excel文件的平均值和标准差
我想计算大约50个Excel文件中x、y和z这三列的平均值和标准差,这些文件都保存在一个文件夹里。每个Excel文件的第一列是x值,第二列是y值,第三列是z值。我在用一个脚本,但总是出错。所有文件都是以“.xls”格式保存的。如果你们知道其他方法可以做到这一点,那就太好了。下面是我的脚本和错误信息:
import xlrd
import numpy
import os
path = "E:\\hello\\Patient"
dirList=os.listdir(path)
f = open('E:\\hello\\try.xls', 'w')
f.write('Patient_ID, Xavg, xstd, yavg, ystd, zavg, ystd')
f.write("\n")
##print dirList
##i = 0
Col_values=[]
for file in dirList:
fullpath = os.path.join(path,file)
## print fullpath
if os.path.isfile(fullpath) == 1:
wb = xlrd.open_workbook(fullpath)
sh = wb.sheet_by_index(0)
f.write(str(file))
f.write(", ")
for i in range(0,3):
for j in range(sh.nrows):
Col_values.append(sh.cell(j,i).value)
a = numpy.average(Col_values)
b = numpy.std(Col_values)
f.write(str(a))
f.write(", ")
f.write(str(b))
f.write(", ")
f.write("\n")
f.close()
2 个回答
0
一步一步来,确认你能从xls文件中读取到内容。使用文件的绝对路径,也就是完整的文件地址。顺便说一下,代码看起来没问题(就我所知)。错误可能出在xls文件本身...
可以试试这样:
import xlrd
wb = xlrd.open_workbook('myworkbook.xls')
#Get the first sheet either by index or by name
sh = wb.sheet_by_index(0)
sh = wb.sheet_by_name(u'Sheet1')
#Index individual cells:
cell_A1 = sh.cell(0,0).value
0
除了读取Excel文件,你的脚本还想写一个文件,但这样是行不通的。你需要使用xlwt这个包来写.xls格式的文件。现在你写的方式更像是在处理CSV文件。如果你所谓的Excel文件其实都是CSV文件(尽管名字后面是.xls),那么xlrd就无法正确读取它们。
如果你真的想处理Excel文件,应该同时使用xlrd(用于读取)和xlwt(用于写入)。如果你能只用CSV文件,那就根本不需要用到xlrd。你应该使用Python自带的csv模块来处理.csv文件的读取和写入。