Python大数据实验分析与挖掘综合实验平台

张开发
2026/4/13 16:49:55 15 分钟阅读

分享文章

Python大数据实验分析与挖掘综合实验平台
一、实验目的构建一个基于Streamlit的交互式 Web 应用用于展示和运行《Python大数据分析与挖掘实战第2版》教材中的代码示例。提供多语言界面中文、英文、越南语、老挝语支持深色模式增强用户体验。实现代码查看、自动解析提取文档字符串与注释、在线运行测试、AI 智能问答等核心功能。支持用户标记学习进度已完成实验并能自动跳转下一实验或下一章。解决原始代码中存在的目录定位、编码兼容、进度条参数错误等问题并进行全面优化。二、实验环境项目说明操作系统Windows 11 / 10Python 版本3.8主要库streamlit, subprocess, tempfile, pathlib, re, typing, openai可选代码编辑器VS Code / Spyder / PyCharm运行命令streamlit run app.py数据目录C:\Users\23769\.spyder-py3\...\程序与数据 (2)可动态修改三、系统设计与架构3.1 总体架构系统采用前后端一体的 Streamlit 框架整体分为以下几个模块国际化模块基于字典的翻译系统支持动态语言切换。文件加载模块递归扫描指定根目录识别“第1章”~“第8章”文件夹读取所有.py文件内容支持多种编码。代码解析模块自动提取文档字符串docstring或前20行注释展示章节学习要点。代码运行模块将代码写入临时文件调用子进程执行捕获标准输出/错误超时控制。AI 助手模块可选调用 OpenAI API 进行智能问答无 API Key 时提供基于正则的模拟分析。进度管理模块使用st.session_state存储用户完成的实验列表支持章节进度重置。UI 样式模块自定义 CSS 背景图、卡片样式适配深色模式。3.2 核心函数与流程函数名功能描述t(key, **kwargs)根据当前语言返回翻译文本支持命名参数格式化。get_chapter_number()从“第N章”中提取数字 N。read_file_content()多编码尝试读取文件内容utf-8, gbk, gb2312, utf-8-sig。find_chapter_root()智能路径穿透如果当前目录无“第”字文件夹但只有一个子目录则自动进入最多穿透3层。load_all_data()缓存加载所有章节的代码内容返回{章节名: {文件名: 代码}}。get_ai_response()调用 OpenAI API 或生成模拟回答。apply_custom_css()设置背景图片、渐变覆盖、卡片样式。init_session_state()初始化所有会话状态变量。3.3 目录结构示例text程序与数据 (2)/ └── Python大数据分析与挖掘实战微课版第2版程序与数据/ ├── 第1章/ │ ├── 1-1 基础语法.py │ └── ... ├── 第2章/ │ ├── 2-1 NumPy数组.py │ └── ... ... └── 第8章/ └── ...应用支持自动穿透一层子目录用户只需指定最外层文件夹即可。四、主要功能实现4.1 多语言国际化定义TRANSLATIONS字典包含四种语言的所有界面文本。侧边栏提供下拉菜单切换时自动刷新页面并播放气球动画。所有动态文本如文件数、进度均通过t()函数格式化输出。4.2 代码查看与分析代码查看语法高亮 行号显示并提供下载按钮。代码解析优先提取文件开头的三引号文档字符串。若无文档字符串则提取前20行中的单行注释。根据章节号显示预设的学习要点如“NumPy 数组创建”、“Pandas 数据清洗”。4.3 在线运行测试使用subprocess.run()在独立进程中执行临时 Python 文件。超时时间设为 30 秒防止死循环。自动检测代码中的import/from语句列出依赖库提醒用户。分别显示标准输出和错误输出。4.4 AI 智能助手真实模式若环境变量OPENAI_API_KEY存在调用gpt-3.5-turbo分析代码。模拟模式无 API Key 时基于正则提取代码特征行数、导入库、函数/类名、注释、绘图/机器学习关键词生成基础分析报告。对话历史保存在st.session_state.ai_messages中支持连续问答。4.5 进度跟踪与导航每个实验.py 文件可标记为“已完成”数据存储在completed_experiments[章节]列表中。侧边栏显示当前章节的进度条已完成数/总数。提供“重置本章进度”和“重置全部进度”按钮。主界面底部提供“下一实验”和“下一章”按钮自动跳转。4.6 样式与用户体验背景图采用东南亚风格的棕榈树与寺庙图片来自 Pexels叠加半透明白/黑色渐变。学习卡片.learning-card使用圆角、左边框高亮。深色模式动态切换适配侧边栏、代码块、卡片背景。语言切换时播放st.balloons()动画并显示友好提示。五、优化与修复说明相比原始版本本实验报告对应的代码进行了以下优化问题解决方案根目录下嵌套一层文件夹导致找不到“第1章”增加find_chapter_root()自动穿透唯一子目录最多三层。文件编码错误如 GBK 无法解码增加utf-8-sig编码尝试并按优先级依次尝试。st.progress参数格式错误原代码中使用了未命名的参数改为st.progress(value, textformatted_string)。翻译字典中learning_points被错误当作字符串处理直接返回字典对象并在使用时判断类型。模拟 AI 回答过于简单增加对函数、类、注释、可视化、机器学习等特征的提取与描述。临时文件可能未删除在finally块中增加异常安全的删除操作。章节排序使用字符串而非数字提取章节号并按整数排序避免“第10章”排在“第2章”之前。缺少对空目录或权限错误的处理添加try...except PermissionError和目录存在性检查。代码重复如文件读取逻辑抽取为独立函数read_file_content提高可维护性。六、实验步骤与结果展示6.1 运行应用安装 Streamlitpip install streamlit将最终代码保存为app.py执行命令streamlit run app.py浏览器自动打开http://localhost:85016.2 界面功能演示功能模块操作说明预期结果语言切换侧边栏选择“English”界面立即切换为英文并显示气球动画。深色模式点击“ 深色模式”开关背景变暗卡片、代码块颜色自动调整。根目录设置输入正确路径如C:\Users\23769\...\程序与数据 (2)自动识别章节文件夹侧边栏显示章节列表。代码查看选择“第1章” → 某个 .py 文件 → “ 代码查看”标签显示语法高亮的代码可下载。代码解析切换到“ 代码解析”标签展示文件文档字符串或注释以及本章学习要点。运行代码切换到“⚙️ 运行测试”点击“▶️ 运行此代码”弹出运行结果输出/错误超时提示。AI 助手在“ AI 助手”标签输入问题例如“解释这段代码的用途”模拟模式下返回代码概览真实模式下返回 GPT 分析。标记完成点击“✅ 标记当前实验为已完成”进度条更新文件状态变为“已完成”。下一实验/下一章完成一个文件后点击“下一实验 ➡️”章节末尾点击“下一章 ➡️”自动切换到下一个文件或下一章的第一个文件。6.3 实际运行截图描述侧边栏显示语言选择、深色模式、根目录输入框、当前目录下的文件夹列表、章节下拉框、文件搜索框、平台统计卡片、进度条、重置按钮。主内容区顶部标题与副标题文件信息行文件名、行数四个标签页代码查看、代码解析、运行测试、AI 助手。底部标记完成按钮、下一实验/下一章按钮、版权信息。七、实验总结成功构建了一个功能完善的 Python 教学辅助平台支持教材代码的统一管理、运行和分析。多语言国际化设计使得平台可面向不同语种的学生具有较好的扩展性。智能目录穿透解决了常见的一层嵌套问题降低了用户配置门槛。AI 助手的加入即使模拟模式为学生提供了基础的代码理解辅助真实 API 模式下可提供更深入的解答。进度跟踪与导航功能有助于学生按章节顺序学习提升实验效率。通过本次实验深入掌握了 Streamlit 的状态管理、缓存机制、子进程调用、动态样式修改以及国际化实现技巧。八、后续改进方向增加代码自动保存与运行历史记录。支持更多编程语言R、SQL的展示与运行。集成 Jupyter Notebook 内核实现交互式单元格执行。增加用户登录与云端进度同步功能。优化模拟 AI 的解析能力引入本地小模型如 transformers替代正则。20260412150627-streamlit运行视频-1

更多文章