在python中从excel工作表确定平均值
请有人帮我解决这个问题,我试图找到B2:B1500中的值的平均值,它是从excel提取到python环境中的,但我被卡住了。这是我到目前为止写的代码在python中从excel工作表确定平均值,python,excel,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:
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
在本例中,问题在于
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
如果只想通过使用变量来减少内存使用,可以执行以下操作:
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
注意:我还没有测试这些解决方案。您试图在双循环中定义一个函数,这不是一个好主意,因为代码在很多方面都是错误的。