python - 在Python中确定Excel工作表的平均值

标签 python excel

请有人帮我解决这个问题,我试图找到从 Excel 提取到 python 环境中的 B2:B1500 值的平均值,但我被卡住了。这是我到目前为止编写的代码。

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

注意:我尚未测试这些解决方案。

关于python - 在Python中确定Excel工作表的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48414370/

相关文章:

带有字节变量的 VBA 溢出错误

excel - 试图在单元格中找到精确字符串的下一个实例

python - 运行 Rasa Stack 时超出最大重试次数并出现连接拒绝错误

Python-在数据上拟合对数模型曲线

python - 为什么 Python 列表实现为动态数组而不是环形缓冲区?

python - PyQt5 固定窗口大小

excel - 为什么这段代码会导致无限循环

vba - 复制/粘贴过滤表中包含空白的整列

python - sklearn导入错误: cannot import name plot_roc_curve

excel - 需要对象 - 将变量传递给函数