学生评教,问卷调查表评价教师统计,python+pandas处理数据

本文主要是介绍学生评教,问卷调查表评价教师统计,python+pandas处理数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上一个结果表格

几个关键步骤

1、问卷网站上设置相关题目,条目,最好用评分题目(点击文本选项,但是保存下来的是分值),如图

2、pandas清洗数据,包括unstack,其目的是把所有学生得分细分展开,因为班级选科不同,问卷上针对的教师不同,比如有些学生需要评价物理教师,有些需要评价历史老师,教师数据每个维度都存在竖表中,如图

3、pandas以["校区","年级","班级","班主任或学科","题号"],groupby,进一步,按得分列求平均分,这个分数是学科的班级平均分(按评价细分维度,如第1题等等)

4、pandas数据透视表pivot_table,index=["校区","年级","班级","班主任或学科"], columns='题号', values='得分',建立班级汇总的得分透视表

5、上表已经是教学管理部门要求的最细表格,要作为结果保存在.xlsx中。然后根据教师姓名,利用AVERAGEIFS计算每位教师的汇总分(带的班级较多要计算平均分)。

第2、3步骤的代码:

# -*- coding: gbk -*-import pandas as pd
import osxl = pd.ExcelFile('学生细分表.xlsx')
df = xl.parse('Sheet1')df_melt = df.melt(id_vars=["校区","年级","班级","性别","选科"],var_name="项目",value_name="得分"  )#print(df_melt)
df_filtered = df_melt[pd.notna(df_melt['得分'])]
df_splitted = df_filtered['项目'].str.split('_',expand=True)
df_splitted = df_splitted.rename({0:'班主任或学科',1:'题号'},axis=1)
df_comb = pd.concat([df_filtered,df_splitted],axis=1)#'''
for index, row in df_comb.iterrows():#print(index,row['性别'],df_comb.at[index, '班主任或学科'])if row['性别'] == "男" and row['班主任或学科'] == "体育":new_sub = "体育男"df_comb.at[index, '班主任或学科'] = new_subif row['性别'] == "女" and row['班主任或学科'] == "体育":new_sub ="体育女" df_comb.at[index, '班主任或学科'] = new_sub
#'''df_comb.to_csv('学生细分表展开.csv', index=False)
print(df_comb.head(20))
#以上正常数据df_comb=df_comb.groupby(["校区","年级","班级","班主任或学科","题号"], as_index=False).agg({"得分":"mean"}) #跟39行reset_index作用一样df_class = pd.pivot_table(data=df_comb, index=["校区","年级","班级","班主任或学科"], columns='题号', values='得分')df_class.to_csv('班级按题号得分表.csv', index=False)df_comb.to_csv('班级按题号得分表展开.csv', index=False)

 第4步骤的代码

# -*- coding: gbk -*-import pandas as pd
import numpy as np
import osdf = pd.read_csv('班级按题号得分表展开.csv')
df2 = pd.read_csv('师资安排班师表展开.csv')df_class = pd.pivot_table(data=df, index=["校区","年级","班级","班主任或学科"], columns='题号', values='得分').reset_index()df_class['班主任或学科']=df_class['班主任或学科'].astype('category').cat.set_categories(['班主任','语文','数学','英语','物理','化学','生物','政治','历史','地理','音乐','体育女','体育男','美术','信息','通用','心理'])
df_class_sorted = df_class.sort_values(by=["班主任或学科","校区","年级","班级"], ascending=[True, True, True, True],inplace=True)df_class.insert(3, "教师", np.nan)
df_class.insert(5, "满意率", np.nan)for index, row in df_class.iterrows():#for column_name, value in row.items():con1=df_class.at[index, '校区']con2=df_class.at[index, '年级']con3=df_class.at[index, '班级']con4=df_class.at[index, '班主任或学科']sum=0if df_class.at[index, '班主任或学科'] =="班主任" :sum=df_class.at[index, '第1题']+df_class.at[index, '第2题']+df_class.at[index, '第3题']+df_class.at[index, '第4题']sum=sum/4else:sum=df_class.at[index, '第1题']+df_class.at[index, '第2题']+df_class.at[index, '第3题']+df_class.at[index, '第4题']+df_class.at[index, '第5题']+df_class.at[index, '第6题']+df_class.at[index, '第7题']+df_class.at[index, '第8题']sum=sum/8#print(con1,con2,con3,con4,sum)df_class.at[index, '满意率']=sumcons=df2.loc[(df2['校区']==con1) & (df2['年级']==con2) & (df2['班级']==con3) & (df2['班主任或学科']==con4),"教师"]sstr=list(cons)tname=""if len(sstr)>0:tname=sstr[0]else:tname=""df_class.at[index, '教师']=tnamedf_class.to_csv('班级按题号得分表.csv', index=False)

这里提示一下,因为班级汇总表出来后要填写班级任教信息,管理部门一般提供的这样的表格可以用以下代码转换为

df_melt = df.melt(id_vars=["校区","年级","班级","选科"],var_name="班主任或学科",value_name="教师"  )df_filtered = df_melt[pd.notna(df_melt['教师'])]df_filtered.to_csv('师资安排班师表展开.csv', index=False)  

这篇关于学生评教,问卷调查表评价教师统计,python+pandas处理数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/599098

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开