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实战的主要内容,如果未能解决你的问题,请参考以下文章

AcWing算法基础课,提高课,进阶课目录

python-openpyxl操作excel

python-openpyxl操作excel

python-openpyxl操作excel

万门大学人工智能课目录

Python-openpyxl对excel取消/合并单元格,以及修改单元格值