2025年度“楚怡杯”湖南省职业院校技能竞赛高职高专组电子信息类Python程序开发赛项
【时量:240分钟】
一、注意事项
- 请根据大赛所提供的竞赛环境,检查所列的硬件设备、软件清单、材料清单是否齐全,计算机设备是否能正常启动。
- 竞赛结束前,在竞赛平台提供的虚拟机中,根据赛题将各项目代码进行完善整合,并运行;根据竞赛平台左侧的答题区进行答题,根据题目要求对运行代码及结果进行截图。
- 竞赛结束时,请将答题区的答题报告进行保存提交操作,答题报告在竞赛结束前可重复提交。
二、竞赛环境
- PC机:系统已安装Python 3.7.x相关环境。
- 根据任务书说明,从竞赛平台虚拟机桌面获取程序开发项目工程项目包。桌面的工程项目包可以直接使用虚拟机中的PyCharm导入、编译、运行和发布。
- 竞赛平台虚拟机内为断网环境,但已内置部署于本地的目标网站“星点视频”(https://py-p1.sb-cc.cc.cd),所有爬虫任务均针对该本地站点。
三、软件组件
- Python 编程语言及相关开发环境(Python、PyCharm)
- Web 框架(Django)
- Python 爬虫组件(Requests、lxml、BeautifulSoup、Scrapy、Selenium)
- Python 数据分析组件(NumPy、Pandas)
- Python 可视化组件(Matplotlib、Pyecharts、seaborn)
- Python 机器学习组件(Scikit-learn)
四、赛题
模块一:网络爬虫(20分)
任务一:获取星点视频网站数据
【任务说明】
数据是企业的重要资产。某视频分析团队需要获取“星点视频”平台的公开数据,用于后续分析。现有一个视频网站,网站上有大量用户对各类视频的播放、评论、点赞等数据,请根据具体要求,编写爬虫实现数据抓取。
【任务要求】
- 使用
requests库向网站首页发送请求。 - 使用BeautifulSoup或Xpath从响应内容中解析数据。
- 从首页中获取视频分类名和各类别链接。
- 向各类别链接发送请求,从响应内容中获取视频具体的播放、评论、点赞等数据。
- 将抓取的数据存入CSV文件中。
- 绕过网站的反爬虫检测。
【操作说明】
- 从虚拟机桌面“赛题/01_网络爬虫/01_获取网站数据”文件夹中获取相关项目工程代码。
- 完成任务后,根据平台“答题区”对应内容要求,完成答题报告并点击“保存”按钮实时保存。
模块二:数据清洗(30分)
任务一:视频数据清洗
【任务说明】
数据清洗是数据分析过程中很重要的一个环节,没有高质量的数据清洗就没有高质量的数据分析。上一模块抓取的数据可能存在不规范、缺失或异常值,现有一份从爬虫结果导出的原始数据文件 raw_videos.csv,请根据任务要求完成数据清洗功能。
【任务要求】
请你使用NumPy和Pandas按如下要求对数据进行清洗:
- 使用Pandas读取CSV文件。
- 检查数据基本信息:形状、每列缺失值数量、数据类型等。
- 将
duration列由“MM:SS”字符串格式转换为总秒数(整数类型),新增一列duration_seconds。 - 删除任一字段缺失的行。
- 将
plays、comments、likes、favorites四列转换为整数类型,无法转换的删除。 - 删除上述四列中任一项为负数或0的行。
- 处理
tags列:去重重复标签。 - 删除完全重复的数据行。
- 删除
plays值大于其99.9分位数的极端离群值。 - 按
plays降序排列,重置索引。 - 将清洗后的数据保存为
cleaned_videos.csv。
【操作说明】
- 从虚拟机桌面“赛题/02_数据清洗/01_数据清洗”文件夹中获取相关项目工程代码。
- 完成任务后,根据平台“答题区”对应内容要求,完成答题报告并点击“保存”按钮实时保存。
模块三:数据分析及可视化(30分)
任务一:视频分类综合热度分析
【任务说明】
现需要搭建一个简洁的数据看板,展示各视频分类的综合热度表现。综合热度定义为:热度值 = plays * 0.5 + likes * 0.3 + comments * 0.15 + favorites * 0.05。请根据任务要求完成数据分析与可视化。
【任务要求】
- 创建Django项目
video_dashboard,应用名为analysis。 - 读取
cleaned_videos.csv文件中的数据。 - 编写视图函数,计算每个视频分类的平均热度值、平均播放量、平均评论数,以及各分类视频数量。
- 使用PyEcharts绘制“堆叠柱状图”:
- X轴为视频分类,Y轴为标准化后的数值(0-100量纲)。
- 堆叠展示两个指标:该分类的平均播放量、平均热度值。
- 柱状图颜色:平均播放量使用蓝色系渐变色(起始色
#3398DB,结束色#7EB5E6);平均热度值使用橙色系(#F5A623)。 - 柱状图宽度设为
60%,柱间间距30%。 - 添加数据标签(数值显示在柱内或柱顶)。
- 图表标题为“视频分类热度与播放量堆叠对比”,标题字号16,加粗。
- 在同一页面中绘制一个“饼图”(玫瑰图样式),展示各分类视频数量占比:
- 半径范围
['20%', '60%']。 - 颜色使用预设配色方案(
'pastel'或'bright')。 - 每个扇区显示分类名称和百分比(保留一位小数)。
- 饼图中心添加标题“分类视频数量分布”。
- 半径范围
- 通过Django模板将两个图表渲染到同一个前端页面,页面布局为左右两列(左侧堆叠柱状图,右侧玫瑰饼图)。
- 页面路由设置为
/dashboard/。
【操作说明】
- 从虚拟机桌面“赛题/03_数据分析及可视化/01_视频分类热度分析”文件夹中获取相关项目工程代码。
- 完成任务后,根据平台“答题区”对应内容要求,完成答题报告并点击“保存”按钮实时保存。
任务二:视频互动特征分析
【任务说明】
现需要对清洗后的数据进行统计可视化,探索播放量与其他互动指标的关系,以及不同视频分类的互动分布情况,请根据任务要求完成数据分析。
【任务要求】
- 使用Pandas读取
cleaned_videos.csv。 - 使用Seaborn绘制以下图表,并保存为PNG文件,分辨率300dpi:
- 相关性热力图:
- 计算
plays、likes、comments、favorites、duration_seconds的相关性矩阵。 - 使用红蓝渐变配色(
cmap='coolwarm'),中心为白色。 - 每个单元格内显示相关系数数值,字体大小10,颜色黑色。
- 标题为“互动指标相关性矩阵”,字体大小14。
- 计算
- 播放量与点赞数散点图:
- 横轴
plays,纵轴likes。 - 按
category分类着色,使用调色板(palette='Set2')。 - 添加线性回归拟合线(
regplot,置信区间为95%)。 - 回归线样式:红色实线,线宽2;置信区间填充浅红色,透明度0.3。
- 散点大小
s=30,边缘色灰色。 - 标题为“播放量与点赞数关系”,横轴标签“播放量”,纵轴标签“点赞数”。
- 横轴
- 各分类播放量箱线图:
- 横轴为
category,纵轴为对数变换后的播放量np.log1p(plays)。 - 箱线图样式:箱体颜色为
lightblue,中位数线为红色实线,异常值显示为菱形(marker='D',大小5)。 - 添加网格线(
grid=True,线型虚线)。 - 标题为“各分类播放量分布(对数化)”,横轴标签“视频分类”,纵轴标签“对数播放量”。
- 横轴为
- 相关性热力图:
- 所有图表须设置中文字体(如SimHei),标题、轴标签、图例正常显示。
- 编写简要分析报告(保存为
analysis_report.md),包含以下内容:- 从热力图中判断与播放量相关性最强的两个特征,并说明系数。
- 从散点图中描述播放量与点赞数的大致关系(正相关/负相关/非线性)。
- 指出箱线图中哪个分类的中位数最高、哪个分类的波动范围最大(四分位距最宽)。
【操作说明】
- 从虚拟机桌面“赛题/03_数据分析及可视化/02_视频互动特征分析”文件夹中获取相关项目工程代码。
- 完成任务后,根据平台“答题区”对应内容要求,完成答题报告并点击“保存”按钮实时保存。
模块四:机器学习(15分)
任务一:视频播放量预测
【任务说明】
现有一批视频特征数据,基于该数据,选择合适的算法训练模型,并对视频的播放量进行预测。
【任务要求】
- 读取
cleaned_videos.csv。 - 提取特征:
likes、comments、favorites、duration_seconds,对category进行独热编码。 - 数据预处理:处理缺失值,标准化数值特征。
- 划分训练集和测试集。
- 选取至少两种回归算法(如线性回归、随机森林回归),使用交叉验证评估,选出较优模型。
- 保存最优模型。
- 对测试文件内部数据进行编码预测
【操作说明】
- 从虚拟机桌面“赛题/04_机器学习/01_视频播放量预测”文件夹中获取项目工程文档。
- 完成任务后,根据平台“答题区”对应内容要求,完成答题报告并点击“保存”按钮实时保存。
任务二:视频分类智能识别
【任务说明】
现有一批视频特征数据,包含播放量、评论数、点赞数、收藏数、时长等,以及对应的分类标签,现要基于该数据集构建机器学习模型,用于视频分类的自动识别。
【任务要求】
- 读取
cleaned_videos.csv,目标列为category。 - 对分类标签进行编码。
- 构造新特征(点赞率、评论率、收藏率),并标准化。
- 划分训练集和测试集。
- 选取至少两种分类算法(如逻辑回归、随机森林),评估并选择较优模型。
- 保存最优模型和标签编码器。
- 输出每个分类的精确率、召回率、F1值。
- 对测试文件内部数据进行编码预测
【操作说明】
- 从虚拟机桌面“赛题/04_机器学习/02_视频分类识别”文件夹中获取项目工程文档。
- 完成任务后,根据平台“答题区”对应内容要求,完成答题报告并点击“保存”按钮实时保存。
职业素养(5分)
【任务要求】
参赛选手操作规范、代码清晰易读、遵守考场纪律、收纳整理干净整洁、文明竞赛。