鱼C论坛

 找回密码
 立即注册
查看: 1898|回复: 4

[已解决]python多条件筛选并计算excel数据编程求助

[复制链接]
发表于 2020-8-29 11:14:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我家有只小火锅 于 2020-8-29 11:15 编辑

1、想筛选出各班语文分数大于60、数学分数大于80、英语分数大于80的学生以及他的总分。
2、求出这些学生总分的平均分

3个sheet里分别对应3个班的数据


程序应该怎么编制啊?
我编了下面的程序,后续就不知道怎么编了

>>> from openpyxl import load_workbook
>>> wb = load_workbook(filename = r"G:\360MoveData\Users\Administrator\Desktop\test.xlsx")
>>> ws = wb["1班"]
>>> for row in ws.iter_cols(min_col=2, min_row=2, max_col=6, max_row=5):
        ws[row[3].coordinate] = '=IF(%s>60,1,2)' % (row[0].coordinate)
        ws[row[4].coordinate] = '=IF(%s>80,3,4)' % (row[1].coordinate)
        ws[row[5].coordinate] = '=IF(%s>80,5,6)' % (row[2].coordinate)
最佳答案
2020-8-29 12:39:51
我家有只小火锅 发表于 2020-8-29 12:34
请问这个论坛上有pandas的学习视频嘛

不想学pandas,openpyxl就只能这么写了,不过还是建议学一下,哔哩哔哩上找,会有很多视频,这个处理大量数据效率高
excel数据.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-29 12:05:44 | 显示全部楼层
数据处理,建议还是用pandas比较好吧,你要用openpyxl实现你上面的需求,估计要写好多代码
你可以试试这个
  1. import pandas as pd

  2. a=pd.read_excel('4.xlsx',sheet_name='1班')  #读取

  3. a['总分']=a.loc[:,['语文','数学','英语']].sum(1)  #计算总分
  4. a['平均分']=a.loc[:,['语文','数学','英语']].mean(1)  #计算平均值

  5. b=a[a['语文']>60]  #按条件筛选
  6. b=b[b['数学']>80]
  7. b=b[b['英语']>80]
  8. a.loc[b.index,'符合条件']='符合条件'  #筛选出符合条件的
  9. print(a)

  10. a.to_excel('result.xlsx',index=False)  #输出
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-29 12:34:02 | 显示全部楼层
疾风怪盗 发表于 2020-8-29 12:05
数据处理,建议还是用pandas比较好吧,你要用openpyxl实现你上面的需求,估计要写好多代码
你可以试试这个 ...

请问这个论坛上有pandas的学习视频嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 12:39:04 | 显示全部楼层
我家有只小火锅 发表于 2020-8-29 12:34
请问这个论坛上有pandas的学习视频嘛
  1. from openpyxl import load_workbook

  2. wb = load_workbook(filename="4.xlsx")
  3. ws = wb["1班"]
  4. for i in range(2, ws.max_row + 1):
  5.     yuwen = int(ws['B' + str(i)].value)
  6.     shuxue = int(ws['C' + str(i)].value)
  7.     yingyu = int(ws['D' + str(i)].value)
  8.     ws['E' + str(i)].value = yuwen + shuxue + yingyu
  9.     ws['F' + str(i)].value = ws['E' + str(i)].value / 3
  10.     if (yuwen>60) and (shuxue>80) and (yingyu>80):
  11.         ws['G' + str(i)].value ='符合条件'
  12. wb.save('result.xlsx')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 12:39:51 | 显示全部楼层    本楼为最佳答案   
我家有只小火锅 发表于 2020-8-29 12:34
请问这个论坛上有pandas的学习视频嘛

不想学pandas,openpyxl就只能这么写了,不过还是建议学一下,哔哩哔哩上找,会有很多视频,这个处理大量数据效率高
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-26 08:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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