Python程序开发竞赛 - 模拟题(第二套)
第三部分:数据分析与可视化(30分)
任务一:商品类别销售趋势与区域分布分析(15分)
技术架构:Django + PyEcharts
【任务说明】
现有某电商平台2022-2024年的商品销售数据(`ecommerce_sales.csv`),请根据任务要求完成数据分析与可视化。
【数据集说明】
数据集文件:`ecommerce_sales.csv`
| 字段名 | 说明 | 示例 |
|---|---|---|
| order_id | 订单编号 | ORD20220101 |
| order_date | 订单日期 | 2022-01-15 |
| category | 商品类别 | 电子产品、服装鞋帽、食品饮料、家居用品、图书文具 |
| product_name | 商品名称 | iPhone 13 |
| price | 商品单价(元) | 5999.00 |
| quantity | 购买数量 | 1 |
| total_amount | 订单金额(元) | 5999.00 |
| province | 省份 | 广东省 |
| city | 城市 | 深圳市 |
| payment_method | 支付方式 | 支付宝、微信支付、银行卡 |
【任务要求】
1.数据读取与清洗(4分)
- 读取数据集 `ecommerce_sales.csv`,对数据进行必要的清洗;
- 处理 `order_date` 格式不一致的问题(如”2022/01/15”与”2022-01-15”);
- 修正 `category` 字段的别名(如”电子”统一为”电子产品”,”服装”统一为”服装鞋帽”等);
- 删除 `category` 为空的记录;
- 重新计算 `total_amount = price * quantity`,修正金额不一致的数据;
- 删除 `province` 为空的记录。
2.数据统计与分析(4分)
- 从 `order_date` 中提取年份和季度信息;
- 按年份 + 季度 + 商品类别分组统计销售额(`total_amount` 求和);
- 创建透视表,行索引为商品类别,列索引为年份-季度。
3.可视化图表绘制(4分)
- 使用 PyEcharts 库绘制热力图(HeatMap);
- X轴为季度标签(如”2022-Q1”、”2022-Q2”等);
- Y轴为商品类别(电子产品、服装鞋帽、食品饮料、家居用品、图书文具);
- 颜色深浅表示销售额大小;
- 设置 VisualMap 组件,显示颜色与数值的映射关系;
- 设置图表标题和提示框格式。
4.Django框架集成(3分)
- 使用 Django 框架创建 Web 项目;
- 在视图函数中完成数据处理和图表生成;
- 通过模板渲染在前端页面中展示该图表。
【操作说明】
- 从指定目录获取相关项目工程代码。
- 完成任务后,根据平台”答题区”对应内容要求,完成答题报告并点击”保存”按钮实时保存。
【评分标准】
| 评分项 | 分值 | 说明 |
|---|---|---|
| 数据读取与清洗 | 4分 | 正确读取CSV,完成所有清洗步骤 |
| 数据统计与分析 | 4分 | 正确提取季度,完成分组统计和透视表 |
| 可视化图表绘制 | 4分 | 热力图正确,包含完整配置 |
| Django框架集成 | 3分 | 项目结构正确,视图和模板完整 |
任务二:用户消费行为特征分析(15分)
技术架构:Seaborn 独立架构
【任务说明】
现有某电商平台2023年的用户消费行为数据(`ecommerce_users.csv`),请根据任务要求完成数据分析与可视化。
【数据集说明】
数据集文件:`ecommerce_users.csv`
| 字段名 | 说明 | 示例 |
|---|---|---|
| user_id | 用户编号 | U10001 |
| register_date | 注册日期 | 2021-03-15 |
| age | 用户年龄 | 28 |
| gender | 性别 | 男、女 |
| city_level | 城市等级 | 一线城市、二线城市、三线城市 |
| member_level | 会员等级 | 普通会员、银卡会员、金卡会员、钻石会员 |
| total_orders | 总订单数 | 35 |
| total_spending | 总消费金额(元) | 12580.50 |
| avg_monthly_spending | 月均消费金额(元) | 1048.38 |
| category_preference | 偏好类别 | 电子产品 |
| last_purchase_date | 最后购买日期 | 2023-12-20 |
【任务要求】
1.数据读取与清洗(4分)
- 读取数据集 `ecommerce_users.csv`,对数据进行必要的清洗;
- 处理 `age` 异常值(负数或大于120的设为NaN后删除);
- 处理 `total_spending` 缺失值(删除对应记录);
- 处理 `member_level` 空值(删除对应记录);
- 重新计算 `avg_monthly_spending = total_spending / 12`。
2.数据分析(3分)
- 分析用户年龄、消费金额、购买频次之间的相关关系;
- 按会员等级分组统计用户数量和平均消费金额。
3.可视化图表绘制(6分)
- 使用 Seaborn 库绘制 1行2列 的子图布局:
-左侧子图:使用 `sns.regplot` 或 `sns.lmplot` 绘制带回归线的散点图
1 | - X轴为用户年龄,Y轴为月均消费金额; |
-右侧子图:使用 `sns.countplot` 或 `sns.barplot` 展示各会员等级的用户数量分布。
- 设置整体标题、各子图标题、坐标轴标签;
- 使用 `sns.set_style` 设置图表样式。
4.结果输出(2分)
- 将图表保存为 PNG 图片文件(`user_behavior_analysis.png`),分辨率 dpi=150;
- 打印数据清洗后的摘要统计信息(记录数、各字段描述性统计)。
【操作说明】
- 从指定目录获取相关项目工程代码。
- 完成任务后,根据平台”答题区”对应内容要求,完成答题报告并点击”保存”按钮实时保存。
【评分标准】
| 评分项 | 分值 | 说明 |
|---|---|---|
| 数据读取与清洗 | 4分 | 正确读取CSV,完成所有清洗步骤 |
| 数据分析 | 3分 | 正确分析变量关系,完成分组统计 |
| 可视化图表绘制 | 6分 | 子图布局正确,图表要素完整 |
| 结果输出 | 2分 | PNG正确保存,摘要信息完整 |
【注意事项】
- 任务一需在 Django 项目框架下完成,任务二为独立 Python 脚本;
- 所有代码注释使用中文;
- CSV 数据文件放置在项目根目录下;
- 任务二脚本中必须设置 `matplotlib.use(‘Agg’)` 以确保无图形界面环境下正常运行;
- 代码风格清晰,缩进规范,符合 Python 编码规范。