python-openpyxl实战
Posted Rgylin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-openpyxl实战相关的知识,希望对你有一定的参考价值。
目录
任务需求
在表格中
每个考生下的同一个课目的同一个试卷类型的这些成绩为一组,编辑大于2个标准差和大于3个标准差的数值(加上平均值)
首先看一下长度
emm 手动是不可能了,那就用python openpyxl来处理.
提示:以下是本篇文章正文内容,下面案例可供参考
前提条件
按四个标注, 以type来划分, 每一个学号的科目代码 type来划分
代码实现
import numpy
from openpyxl import Workbook
import openpyxl
f = openpyxl.load_workbook('task.xlsx', read_only=False)
sht = f.active
def gainStd():
#print(sht.max_row,sht.max_column)
std=[]
avg=[]
temp_count=[]
pre=1
for i,data in enumerate(sht.iter_rows()):
if(i==0):
continue
#print(data[3].value)
if(data[2].value!=pre):
std.append(numpy.std(temp_count))
avg.append(numpy.mean(temp_count))
temp_count=[]
temp_count.append(data[3].value)
else:
temp_count.append(data[3].value)
pre = data[2].value
std.append(numpy.std(temp_count))
avg.append(numpy.mean(temp_count))
return std,avg
pre=1
std,avg= gainStd()
count=0
for i, data in enumerate(sht.iter_rows()):
if (i == 0):
continue
if(data[2].value!=pre):
count+=1
if (data[3].value > avg[count]+2 * std[count]):
sht.cell(i+1, 5).value = '✓'
#处理中间值
if(data[3].value>avg[count]+3*std[count]):
sht.cell(i+1,6).value='✓'
else:
#处理过程值
if(data[3].value>avg[count]+2*std[count]):
sht.cell(i+1,5).value='✓'
if(data[3].value>avg[count]+3*std[count]):
sht.cell(i+1,6).value='✓'
pre = data[2].value
f.save('pur.xlsx')
结果
可以看到:短短几秒python已经处理完成了,经过 测试
完成任务
挑一个贴上
以上是关于python-openpyxl实战的主要内容,如果未能解决你的问题,请参考以下文章