找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 1611|回复: 0

[《从excel到python》笔记案例] 五、列表切片应用案例--按行对数据求平均值

[复制链接]

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750848
发表于 2022-1-28 20:26:12 | 显示全部楼层 |阅读模式
2022-01-28_201600.png
需求:本案例求每个人平均分写入N列
思路1:用ws.row_values(row)方法拿到整行的值,然后利用切片【1:-1】去掉第一个姓名,和最后一个空值,再用sum函数求和除以12,round函数四舍五入。
思路2:先循环每行数据,然后再循环每列,把每个数值相加除以12保留两位
下面分别上两个思路代码:


  1. import xlrd #导入xls文件读取库。
  2. from xlutils.copy import copy #导入工作簿复制函数
  3. wb=xlrd.open_workbook('Chapter-5-4-1.xls') #读取工作簿。
  4. ws=wb.sheet_by_name('分数表') #读取工作表。
  5. nwb=copy(wb) #复制工作簿为副本。
  6. nws=nwb.get_sheet('分数表') #读取副本工作簿中的工作表。
  7. for row_num in range(1,ws.nrows): #循环行号。
  8.     row_vals=ws.row_values(row_num) #根据行号读取每行的值。
  9.     avg_score=sum(row_vals[1:-1])/12 #对每行的分数求平均值。
  10.     fmt_score=round(avg_score,2) #将平均值四舍五入到小数点后两位。
  11.     nws.write(row_num,13,fmt_score) #将平均值写入13列中的单元格。
  12. nwb.save('Chapter-5-4-1.xls') #保存副本工作簿。
复制代码
  1. import xlrd
  2. from xlutils.copy import copy
  3. wb = xlrd.open_workbook('Chapter-5-4-1.xls')
  4. ws = wb.sheet_by_index(0)
  5. nwb = copy(wb)
  6. nws = nwb.get_sheet('分数表')
  7. for row in range(1,ws.nrows):
  8.     avg = round(sum(ws.row_values(row)[1:-1])/12,2)
  9.     nws.write(row,13,avg)
  10. nwb.save('0.xls')
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号-3 )

GMT+8, 2024-4-19 11:17 , Processed in 0.101081 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表