Python帮助计算Excel文件的平均值和标准差

1 投票
2 回答
2131 浏览
提问于 2025-04-17 00:08

我想计算大约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文件的读取和写入。

撰写回答