基于 CSV 数据分析的课堂教学问题诊断与改进建议系统
在教育数字化转型的背景下通过量化数据分析课堂教学行为、评估教学质量已成为提升课堂效率的重要手段。本文将分享一个基于 Python 实现的课堂教学问题诊断系统该系统能够读取 CSV 格式的课堂评估数据对比待测课与优质课的各项指标占比借助大语言模型自动生成问题分析报告和改进建议。一、系统设计思路本系统核心目标是通过结构化的 CSV 数据解析提取课堂教学的关键维度指标师生行为、关键能力、关键行为、情感体验对比待测课与优质课的指标差异最终生成有针对性的问题分析和改进策略。整体流程分为三个核心环节数据解析读取不同维度的 CSV 数据提取标准化的指标占比数据对比构建待测课与优质课的指标字典明确差异点智能分析调用大语言模型基于指标差异生成问题分析和改进建议。二、核心代码实现1. 环境准备与类初始化首先需要安装依赖库并初始化核心类配置 API 密钥和 CSV 文件路径本文使用阿里云通义千问兼容 OpenAI 接口的模式。import openai import json import csv import os from typing import Dict, List, Tuple import re class ProblemImprovement: def __init__(self, api_keyNone, csv_filesNone, weight_file_pathNone): self.api api_key # 配置通义千问兼容OpenAI的客户端 self.client openai.OpenAI( api_keyself.api, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1) # 定义课堂评估的核心维度与指标 self.indicators { 师生行为: [全班讲解, 个别指导, 教师巡视, 学生听讲, 学生回答, 学生做题, 小组活动, 汇报展示], 关键能力: [知识理解, 表达交流, 实践应用, 创造迁移], 关键行为: [陈述, 提问, 回答, 反馈, 管理], 情感体验: [积极, 中性, 消极, 积极, 中性, 消极, 积极] } self.weight_file_path weight_file_path self.csv_files csv_files2. CSV 数据解析核心方法CSV 文件中存储了课堂各维度的指标占比和优质课参考值需要针对性解析不同维度的数据以师生行为数据解析为例def extract_teacher_student_data(self, file_path: str) - Dict[str, List[float]]: 提取师生行为数据返回待测课和优质课的指标占比小数形式 result {test: [], quality: []} try: with open(file_path, r, encodingutf-8) as file: # 处理BOM字符避免表头解析错误 content file.read() content content.lstrip(\ufeff) reader csv.reader(content.splitlines()) headers next(reader) # 查找占比和优质课列的索引 ratio_index -1 quality_index -1 for i, header in enumerate(headers): if 占比 in header: ratio_index i elif 优质课 in header: quality_index i if ratio_index -1 or quality_index -1: raise ValueError(找不到占比或优质课列) # 读取二级指标数据并标准化为小数 for row in reader: if len(row) max(ratio_index, quality_index) and row[1] 二级指标: try: test_value float(row[ratio_index].strip().rstrip(%)) quality_value float(row[quality_index].strip().rstrip(%)) result[test].append(test_value / 100) # 转换为小数 result[quality].append(quality_value / 100) # 转换为小数 except (ValueError, IndexError): continue except Exception as e: raise Exception(f提取师生行为数据时出错: {str(e)}) return result该方法的核心逻辑处理 CSV 文件的 BOM 字符避免编码问题动态查找 “占比” 和 “优质课” 列的索引适配不同格式的 CSV 文件过滤二级指标行数据将百分比转换为小数便于后续计算和对比。3. 构建指标对比字典将各维度的解析结果整合为结构化的字典键为具体指标如 “全班讲解”“知识理解”值为对应的占比def get_dict(self) - tuple: 从四个CSV文件读取课堂评估数据返回待测课和优质课的指标占比字典 try: # 初始化向量字典 test_vectors {} quality_vectors {} # 处理师生行为数据 if 师生行为 in self.csv_files and os.path.exists(self.csv_files[师生行为]): behavior_data self.extract_teacher_student_data(self.csv_files[师生行为]) test_vectors[师生行为] behavior_data[test] quality_vectors[师生行为] behavior_data[quality] # 处理话语功能关键能力、话语形式关键行为、情感体验数据逻辑类似略 # ... # 构建最终的指标字典 test_dict {} quality_dict {} # 按照预设指标顺序匹配数据 for dimension, indicators_list in self.indicators.items(): if dimension in test_vectors: test_values test_vectors[dimension] for i, indicator in enumerate(indicators_list): if i len(test_values): test_dict[indicator] test_values[i] if dimension in quality_vectors: quality_values quality_vectors[dimension] for i, indicator in enumerate(indicators_list): if i len(quality_values): quality_dict[indicator] quality_values[i] return test_dict, quality_dict except FileNotFoundError as e: raise FileNotFoundError(f找不到必要的数据文件: {str(e)}) except Exception as e: raise Exception(f读取数据时出错: {str(e)})4. 调用大模型生成问题分析基于指标对比字典构造提示词调用大语言模型生成结构化的问题分析报告def get_problem_analysis(self) - str: 获取问题分析部分 test_dict, quality_dict self.get_dict() # 构造精准的提示词约束输出格式和内容 prompt f # 任务 你的核心任务是通过对比待测课和优质课的指标占比对课堂教学中存在的主要问题和不足进行分析。 # 输出要求 通过对比待测课和优质课的指标占比分析课堂教学中存在的主要问题和不足。具体为数据表明本节课各项指标表现...但在...仍有一定的改进空间。例如...环节虽...但...该环节...占比低于优质课...。在...层面虽然...但......特别是...有待加强。...环节主要是......类话语较少表现为...缺乏...。此外... # 关键要求 - 背景要求: 必须先对比待测课和优质课的指标占比了解该课堂中老师采用的教学方式以及学生的学习情况。 - 结构要求: 必须以4个空格开头实现首行缩进。 - 内容要求: 必须生成一个内容完整连贯的段落不准分段。 - 格式要求: 严禁使用任何形式的列表、分点符号或JSON格式。 # 对比数据 待测课指标占比: {test_dict} 优质课指标占比: {quality_dict} try: response self.client.chat.completions.create( modeldeepseek-v3, messages[ {role: system, content: 你是一个擅长对课堂进行问题分析的分析助手。}, {role: user, content: f{prompt}} ], max_tokens1500, temperature0.5 ) response response.choices[0].message.content.strip() return {status: success, problem_analysis: response} except Exception as e: return {status: error, error_message: str(e)}5. 生成改进建议基于问题分析结果进一步生成可落地的改进建议核心逻辑与问题分析类似但调整提示词聚焦 “解决方案”def get_improvement_suggestions(self) - str: 获取改进建议部分 test_dict, quality_dict self.get_dict() problem_analysis self.get_problem_analysis().get(problem_analysis, ) prompt f # 任务 针对课堂教学的问题分析结果提出具体的改进策略和实施方案。 # 输出要求 - 内容要求: 都是小标题具体改进建议的形式使用一二等中文序号。 - 格式要求: 严禁使用其他列表形式、分点符号或JSON格式最多允许一个换行。 # 输入数据 待测课指标占比: {test_dict} 优质课指标占比: {quality_dict} 问题分析结果: {problem_analysis} # 调用大模型逻辑与问题分析类似略 # ...三、系统使用示例if __name__ __main__: # 配置API密钥和CSV文件路径 API_KEY 你的API密钥 csv_files { 师生行为: r.\doc\师生行为.csv, 话语形式: r.\doc\话语形式.csv, 话语功能: r.\doc\话语功能.csv, 师生情绪: r.\doc\师生情绪.csv } # 创建实例并运行 problem_improvement ProblemImprovement(api_keyAPI_KEY, csv_filescsv_files) try: problem_analysis problem_improvement.get_problem_analysis()[problem_analysis] improvement_suggestions problem_improvement.get_improvement_suggestions()[improvement_suggestions] print( 课堂教学问题分析 ) print(problem_analysis) print(\n 改进建议 ) print(improvement_suggestions) except Exception as e: print(f执行失败: {str(e)})四、系统亮点与扩展方向1. 核心亮点数据适配性强支持不同格式的 CSV 文件自动处理 BOM 字符、列名模糊匹配兼容百分比格式数据结构化输出通过精准的提示词工程约束大模型输出格式避免杂乱的非结构化文本维度全覆盖涵盖师生行为、关键能力、关键行为、情感体验四大核心维度分析全面。2. 扩展方向权重配置引入指标权重文件支持不同学科、学段的权重自定义可视化展示结合 Matplotlib/Plotly 将指标对比结果绘制成图表直观呈现差异批量处理支持多份课堂数据的批量分析生成汇总报告本地化部署对接本地化大模型避免数据外发提升安全性。五、总结本系统通过 Python 实现了课堂教学数据的自动化解析与智能分析将量化数据与大语言模型的自然语言生成能力结合既能精准定位课堂教学的问题点又能输出可落地的改进建议。该方案可广泛应用于教师教学反思、学校课堂质量评估、教研活动等场景为教育教学质量提升提供数据化、智能化的支撑。在实际应用中可根据具体的课堂评估体系调整indicators字典的指标定义优化提示词以适配不同的教学场景如小学、中学、不同学科进一步提升分析结果的精准性和实用性。