Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从excel工作表确定平均值_Python_Excel - Fatal编程技术网

在python中从excel工作表确定平均值

在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:

请有人帮我解决这个问题,我试图找到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

在本例中,问题在于
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

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

您试图在双循环中定义一个函数,这不是一个好主意,因为代码在很多方面都是错误的。