python帮助计算excel文件的平均值和std

时间:2011-08-22 19:06:40

标签: python xlrd

我试图计算我保存在文件夹中的大约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 :(得分: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

答案 1 :(得分:0)

除了阅读Excel文件外,您的脚本也尝试编写一个。它不会起作用。您需要使用xlwt包来编写.xls文件。您现在的写作方式看起来更像CSV。如果所有所谓的Excel文件都是CSV文件(尽管名称以.xls结尾),那么xlrd将无法正确读取它们。

如果您真的想使用Excel文件,则应同时使用xlrd(读取)和xlwt(写入)。如果您可以使用CSV文件,则根本不应该使用xlrd。您应该使用Python包含的csv模块(用于读取和写入.csv文件)。