确定python中excel表的平均值

时间:2018-01-24 03:28:56

标签: python excel

请有人可以帮我这个,我试图找到B2:B1500的值的平均值,这是从excel提取到python环境但我卡住了。这是我到目前为止编写的代码。

wb=xl.load_workbook("J:/Data/T0444CH1.xlsx")
type(wb)
ws = wb.active
tuple(ws['B2':'B1500'])
for rowOfCellObjects in ws['B2':'B1500']:
    for cellObj in rowOfCellObjects:
        def avg(cellObj):
            return float(sum(cellObj))/len(cellObj)
average = sum(cellObj)/len(cellObj)

这是我得到的错误

average = sum(cellObj)/len(cellObj)
TypeError: 'Cell' object is not iterable

1 个答案:

答案 0 :(得分:1)

在这种情况下,问题是cellObj不是Python可以汇总的列表或东西,它是一个变量。另外,另一个问题是你从未调用过你的平均函数,这与最后一行完全相同,并且也会导致相同的错误,所以你可以使用它或删除它 (我建议删除它)。

如果您仍想使用sum功能,则可以创建所有值的列表。在这种情况下,你可以这样做:

wb=xl.load_workbook("J:/Data/T0444CH1.xlsx")
type(wb)
ws = wb.active
tuple(ws['B2':'B1500'])
#Our List Of cells
cells = []
for rowOfCellObjects in ws['B2':'B1500']:
    for cellObj in rowOfCellObjects:
        cells.append(cellObj)
average = sum(cells)/len(cells)

如果您只想使用变量来减少内存使用量,可以这样做:

wb=xl.load_workbook("J:/Data/T0444CH1.xlsx")
type(wb)
ws = wb.active
tuple(ws['B2':'B1500'])
#Our Totals
counter = 0
total = 0.0
for rowOfCellObjects in ws['B2':'B1500']:
    for cellObj in rowOfCellObjects:
      total+=float(cellObj)
      counter+=1
average = total/counter

注意:我没有测试过这些解决方案。