前一百成绩分析

news2024/11/28 6:51:45

一、实施目的


基于考情,针对目标生制定学习成果“一生一案”方案,帮助目标生消灭短板学科,达到各科均衡发展。


二、实施方法


1、对年级总分科目总分排名前80的学生,制定“一生一案”
2、对标总分名次,设置单科合理区间,超出单科合理区间视为“薄弱学科”,并按名次划分不同档位
3、找出薄弱学科的责任老师
4、由各班班主任在班科联席会上,落实到人,安排到位
5、下次统考,进行成果考核


三、单科区间设置标准


总分前30名,单科合理区间为【总分名次,总分名次+20】
总分31至80名,单科合理区间为【总分名次,总分名次+30】
各单科合理区间往后A、B、C、D档区间长度分别设置为10、20、30、50,超出D档为E档


四、考核标准


下次统考目标生单科名次前进1挡,视为达标
前进2挡及以上,定为优秀

最后成果:

实现方式:

通过python代码实现:

1.下载vscode

通过腾讯应用里面可以下载

vscode下载地址
安装就ok了

2.下载安装python解释器

python 官网找到python 3.12.0版本下载安装(各个版本之间语法有些区别)

版本下载地址:https://www.python.org/ftp/python/3.12.0/python-3.12.0-amd64.exe

然后安装的时候勾选path

点击立即安装就好了,然后勾选Add python.exe to PATH

3.配置环境和库

同时按win+r

然后输入cmd

然后输入一下指令

pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

4.新建一个成绩分析文件夹

将他拖到vscode里面

5.在这个文件夹下新建一个前一百分析.ipynb文件

然后贴入代码:

import numpy as np 
import pandas as pd 
import os
import glob
from openpyxl import load_workbook
from openpyxl.styles import PatternFill

f_name = r"C:\Users\xxxxxx\Desktop\成绩\考试.xlsx" #复制文件地址就好,
                                                                      #不需要改斜杠,出现黄色框框也没事

df = pd.read_excel(f_name)
subjects = ["语文","数学","英语","物理","历史","道法","化学","体育","生物","地理","英语听说","历史与道法"]
columns_list = df.columns.tolist() #获取源文件的所有列

#1.计算总分
df['总分']=0
for i in columns_list: #添加总分这一列
    if i in subjects and i != "历史与道法":
        df["总分"]=df['总分']+df[i]  

df = df.sort_values(by='总分',ascending=False)

#提取生成新的dataframe
data = df[['班级','姓名','总分']][:100]
data['总分校名'] = data['总分'].rank(ascending=False,method='min').astype(int)

#年级前三十单科下线位+20,剩下的单科下线为+30
data['单科下线'] = np.where(data["总分校名"]<=30,data['总分校名']+20,data['总分校名']+30)
data['单科合理区间'] = data.apply(lambda row:f"[{row['总分校名']}~{row['单科下线']}]",axis=1)
data['A档下线'] = data['单科下线']+10   #A
data['单科A档区间'] = data.apply(lambda row:f"[{row['单科下线']+1}~{row['A档下线']}]",axis=1)
data['B档下线'] = data['A档下线']+20    #B
data['单科B档区间'] = data.apply(lambda row:f"[{row['A档下线']+1}~{row['B档下线']}]",axis=1)
data['C档下线'] = data['B档下线']+30    #C
data['单科C档区间'] = data.apply(lambda row:f"[{row['B档下线']+1}~{row['C档下线']}]",axis=1)
data['D档下线'] = data['C档下线']+50    #D
data['单科D档区间'] = data.apply(lambda row:f"[{row['C档下线']+1}~{row['D档下线']}]",axis=1)
#E
data['单科E档区间'] = data.apply(lambda row:f"[{row['D档下线']+1}~+∞]",axis=1)
#
###单科档位比较获得
def compare_grade(row,subject):
    subject_grade = row[subject+"校名"]
    if subject_grade<=row["单科下线"]:
        return ""
    elif subject_grade>row["单科下线"] and subject_grade<=row["A档下线"]:
        return "A"
    elif subject_grade>row["A档下线"] and subject_grade<=row["B档下线"]:
        return "B"
    elif subject_grade>row["B档下线"] and subject_grade<=row["C档下线"]:
        return "C"
    elif subject_grade>row["C档下线"] and subject_grade<=row["D档下线"]:
        return "D"
    elif subject_grade>row['D档下线']:
        return "E"
    else:
        return ""
#
def single_subject_analysis(subject):
    if subject in subjects:
        data[subject] = df[subject]#获得语文成绩
        data[subject+'校名'] = data[subject].rank(ascending=False,method='min')#获得语文排名
        data[subject+"档位"] = data.apply(lambda row:compare_grade(row,subject),axis=1)
        data[subject+"责任教师"] = np.where(data[subject+"档位"]!="",data.apply(lambda row:f"{row["班级"]}班{subject}",axis=1),None)
        
for i in columns_list:
    if i in subjects:
        single_subject_analysis(i)

#-----------------------
result_folder = "数据处理文件夹"
os.makedirs(result_folder,exist_ok=True)
file_path = os.path.join(result_folder,"前一百全科.xlsx")
data.to_excel(file_path,index=False)
file_name = [file_path]
for i in columns_list:
    if i in subjects:
        single_df = data[["班级","姓名","总分","总分校名","单科合理区间","单科A档区间","单科B档区间","单科C档区间","单科D档区间","单科E档区间",i,i+"校名",i+"档位",i+"责任教师"]] 
        filename = i+"单科分析.xlsx"
        file_path = os.path.join(result_folder,filename)
        single_df.to_excel(file_path,index=False)
        file_name.append(file_path)
#至此所有文件已经生成

#对文件进行润色--------------
#----------------------------------------------------------------对列进行染色
def color_specific_column(file_path, color, column_name):
    workbook = load_workbook(filename=file_path)
    sheet = workbook.active
    
    header_row = next(sheet.iter_rows(min_row=1, max_row=1))
    column_index = None
    for cell in header_row:
        if cell.value == column_name:
            column_index = cell.column
            break
    
    if column_index is not None:
        for row in sheet.iter_rows(min_row=2):  # 从第二行开始染色
            cell = row[column_index - 1]  # 注意列索引从0开始,而列号从1开始
            cell.fill = PatternFill(start_color=color, end_color=color, fill_type="solid")
    
    workbook.save(filename=file_path)

def process_excel_files_with_columns(folder_path, color, column_names):
    file_paths = glob.glob(os.path.join(folder_path, "*.xlsx"))
    
    for file_path in file_paths:
        for i in range(len(column_names)):
            color_specific_column(file_path, color, column_names[i])

# 示例用法
folder_path = r"C:\Users\xxxxxx\Desktop\成绩\数据处理文件夹"  # 文件夹路径
column_names = ["单科合理区间", "单科A档区间", "单科B档区间", "单科C档区间", "单科D档区间", "单科E档区间"]
colors = ["00FFCC99","00FF99CC","00FFFF99","0099CCFF","00CCFFFF","00FFFFCC"]
for i in range(6):
    process_excel_files_with_columns(folder_path, colors[i], [column_names[i]])

#--------------------------------------------------------------------------对字母进行染色
def color_specific_columns(file_path, colors):
    workbook = load_workbook(filename=file_path)
    sheet = workbook.active
    
    target_values = ["A", "B", "C", "D", "E"]
    for row in sheet.iter_rows():
        for cell in row:
            if cell.value in target_values:
                fill_color = colors[target_values.index(cell.value) % len(colors)]
                cell.fill = PatternFill(start_color=fill_color, end_color=fill_color, fill_type="solid")
    
    workbook.save(filename=file_path)

def process_excel_files_with_columns(folder_path, colors):
    file_paths = glob.glob(os.path.join(folder_path, "*.xlsx"))
    
    for file_path in file_paths:
        color_specific_columns(file_path, colors)

# 示例用法
folder_path = r"C:\Users\lxxxxxx\Desktop\成绩\数据处理文件夹"  # 文件夹路径
colors = ["00FF99CC","00FFFF99","0099CCFF","00CCFFFF","00FFFFCC"]
process_excel_files_with_columns(folder_path, colors)

6.修改细节

将这个地址复制为你要分析的excel文件,例如

win11电脑如下

win10电脑如下

粘贴上去就好了

excel表格要求如下:

长这样的就ok了,每个都是一列

7.涂色方面的文件夹

这两个地方在\数据处理文件夹之前改为成绩文件夹所在位置

格式为:复制的东西\数据处理文件夹

8.选择内核

找到python 3.12.0

然后点击全部运行就好了

然后可能还会出现这种报错

这里显示No module named 'xxxxxxx' 这里代表的是却xxxx

你就在刚才win+r然后输入cmd打开的地方输入

pip install xxxxxx -i https://pypi.tuna.tsinghua.edu.cn/simple some-package  就好了将xxxx替换

最后生成出来的文件分析在这里

出来成果长这样

然后还有提取单科的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425269.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

肯尼斯·里科《C和指针》第11章 动态内存分配(1)动态内存分配的基础知识

数组的元素存储于内存中连续的位置上。当一个数组被声明时&#xff0c;它所需要的内存在编译时就被分配。但是&#xff0c;也可以使用动态内存分配在运行时为它分配内存。在本章中&#xff0c;我们将研究这两种技巧的区别&#xff0c;看看什么时候应该使用动态内存分配以及怎样…

【数学】【记忆化搜索 】【动态规划】964. 表示数字的最少运算符

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 数学 记忆化搜索 LeetCoce964表示数字的最少运算符 给定一个正整数 x&#xff0c;我们将会写出一个形如 x (op1) x (op2) x (op3) x … 的表达式&#xff0c;其中每…

【C++】类和对象万字详解

目录 一、类与对象 1、类是什么 二、类和对象的基础知识 2.1 定义类&#xff1a;成员变量和成员函数 2.2 创建对象&#xff1a;实例化一个类的对象。 2.3对象的生命周期&#xff1a;构造函数和析构函数。 a. 构造函数 b. 析构函数 c.小结&#xff1a; 三、成员变量和…

vue3使用is动态切换组件报错Vue received a Component which was made a reactive object.

vue3使用is动态切换组件&#xff0c;activeComponent用ref定义报错 Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with markRaw or using shallowRef ins…

Ansible基础及常用模块

目录 1.前言 Ansible Ansible的特性 2.ansible环境安装部署 管理端安装ansible(192.168.88.22) ansible目录结构 配置主机清单 配置密钥对验证 3.ansible命令行模块 command 模块 shell 模块 ​编辑cron 模块 user 模块 group 模块 copy 模块 file 模块 hostn…

表达式(C语言)

目录 表达式求值 整型提升 ​编辑整型提升的意义 如何进行整体提升&#xff1f; 算术转换 问题表达式解析 表达式1 表达式2 表达式3 表达式4 表达式5 总结 表达式求值 整型提升 C语言中整型算术运算总是至少以缺省整型类型的精度来进行的 为了获得这个精度&#x…

C++: 类的简单介绍(三)———构造函数的初步认识

概念&#xff1a; 构造函数是一个特殊的成员函数&#xff0c;名字与类名相同,创建类类型对象时由编译器自动调用&#xff0c;以保证 每个数据成员都有 一个合适的初始值&#xff0c;并且在对象整个生命周期内只调用一次 需要注意的是&#xff0c;构造函数虽然名称叫构造&…

多线程编程4——线程安全问题

一、线程之间是并发执行的&#xff0c;是抢占式随机调度的。 多个线程之间是并发执行的&#xff0c;是随机调度的。我们只能确保同一个线程中代码是按顺序从上到下执行的&#xff0c;无法知道不同线程中的代码谁先执行谁后执行。 比如下面这两个代码&#xff1a; 代码一&…

接口性能优化常见12式

目录 1.批处理 2.异步处理 3.空间换时间 4.预处理 5.池化思想 6.串行改并行 7.索引 8.避免大事务 9.优化程序结构 10.深分页问题 11.SQL优化 12.锁粒度避免过粗 1.批处理 批量思想&#xff1a;批量操作数据库&#xff0c;这个很好理解&#xff0c;我们在循环插入场…

GSM-TRIAL-21.04.9-VMware-Workstation.OVA安装教程,GreenBone虚拟机安装教程

将GSM-TRIAL-21.04.9-VMware-Workstation.ova用VMware打开 先设置好网络和内存&#xff1a; 1、打开虚拟机&#xff0c;显示&#xff1a;你的GSM还不能完全正常工作。您想现在完成设置吗? 点击yes 2、创建用户&#xff0c;一会儿登录网页要用&#xff0c;点击yes 3、创建用户…

提升网站性能的秘诀:为什么Nginx是高效服务器的代名词?

在这个信息爆炸的时代&#xff0c;每当你在浏览器中输入一个网址&#xff0c;背后都有一个强大的服务器在默默地工作。而在这些服务器中&#xff0c;有一个名字你可能听说过无数次——Nginx。今天&#xff0c;就让我们一起探索这个神奇的工具。 一、Nginx是什么 Nginx&#x…

Zoho Mail 2023:回顾过去,展望未来:不断进化的企业级邮箱解决方案

当我们告别又一个非凡的一年时&#xff0c;我们想回顾一下Zoho Mail如何融合传统与创新。我们迎来了成立15周年&#xff0c;这是一个由客户、合作伙伴和我们的敬业团队共同庆祝的里程碑。与我们一起回顾这段旅程&#xff0c;探索定义Zoho Mail历史篇章的敏捷性、精确性和创新性…

分布式搜索引擎_学习笔记_3

分布式搜索引擎03 0.学习目标 1.数据聚合 **聚合&#xff08;aggregations&#xff09;**可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售…

各品牌主板快速启动热键对照表及CMOS进入方法

各品牌主板快速启动热键对照表 主板品牌 启动按键 笔记本品牌 启动按键 主机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏碁笔记本 F12 惠普台式机 F12 微星主板 F11 华硕笔记本 ESC 宏碁台式机 F12 梅捷主板 F9 惠普笔…

光伏设计系统都具备哪些功能?

随着可再生能源的日益重要&#xff0c;光伏能源已成为我们能源结构中的重要组成部分。而光伏设计系统作为实现光伏能源高效利用的关键&#xff0c;其功能也日益丰富和多样化。本文将探讨光伏设计系统所具备的主要功能。 1.数据分析与模拟 光伏设计系统能够对大量的数据进行分…

iOS 文件分割保存加密

demo只是验证想法&#xff0c;没有做很多异常处理 默认文件是大于1KB的&#xff0c;对于小于1KB的没有做异常处理demo中文件只能分割成2个&#xff0c;可以做成可配置的N个文件分割拼接还可以使用固定的二进制数据&#xff0c;拼接文件开头或结尾 不论哪种拼法&#xff0c;目的…

InfluxDB数据的导入导出

Background influxdb支持将时序数据导出到文件&#xff0c;然后再将文件导入到数据库中&#xff0c;以此实现数据的迁移。 1、数据导出 语法&#xff1a; 示例&#xff1a; influx_inspect export -datadir "/var/lib/influxdb/data" -waldir "/var/lib/influ…

Django中的模板

目录 一:基本概念 二&#xff1a;模板继承 在Django中&#xff0c;模板是用于呈现动态内容的HTML文件。它们允许你将动态数据与静态模板结合起来&#xff0c;生成最终的HTML页面。 Django模板使用特定的语法和标签来插入动态内容。你可以在模板中使用变量、过滤器和标签来控…

Java技术栈 —— Hadoop入门(二)实战

Java技术栈 —— Hadoop入门&#xff08;二&#xff09; 一、用MapReduce对统计单词个数1.1 项目流程1.2 可能遇到的问题1.3 代码勘误1.4 总结 一、用MapReduce对统计单词个数 1.1 项目流程 (1) 上传jar包。 (2) 上传words.txt文件。 (3) 用hadoop执行jar包的代码&#xff0c;…

【Leetcode 514】自由之路 —— 动态规划

514. 自由之路 电子游戏“辐射4”中&#xff0c;任务 “通向自由” 要求玩家到达名为 “Freedom Trail Ring” 的金属表盘&#xff0c;并使用表盘拼写特定关键词才能开门。 给定一个字符串ring&#xff0c;表示刻在外环上的编码&#xff1b;给定另一个字符串key&#xff0c;表…