📚 Big Data Programming

There are 4 BDG homeworks.

第一次作业:数据处理基础练习

Due: 2026-04-01 closed
Upload Link: 英雄请明年再来

Exercise Requirements

1. 创建一个4行4列的随机数组,并取出该数组的对角线上所有的元素形成一个一维数组。

2. 取出数组[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]中大于等于5并小于等于10的元素作为一维数组返回。

3. 创建一个4行6列的随机数组,并取出该数组第1,2,4列上的所有元素。

4. 创建一个8行9列的随机数组,按如下要求分别取出该数组中的元素:

  1. 取出第1行和第3行的数据
  2. 取出第1行到第3行的数据
  3. 取出前4列的数据
  4. 取出该数组的(0, 0)、(1, 2)、(3, 5)位置上的元素值

5. 求数组data7 = np.random.randint(0, 20, size=(4, 5))中每行最小值与最大值相除的结果。

6. 完成下列关于Series的练习

  1. 用下表中数据创建Series对象(对象名为“score”,索引名为class)
  2. 查看1-5班的数据
  3. 查看哪个班级的平均成绩还没有录入
  4. 获取全年级的平均成绩(空值做0分处理)
  5. 由于参考答案有误,现在要给每位同学的成绩加上2分
  6. 找出平均成绩在90分以上的班级
  1 2 3 4 5 6 7 8 9 10 11 12
class 90 95 85 78 NAN 96 97 NAN 80 87 86 83

7. 完成下列关于DataFrame的练习

  1. 根据下表创建DataFrame对象(列表和字典各用一种实现)
  2. 对创建的DataFrame进行转置
  3. 由于体育老师生病,导致大家的体育成绩没有录入,请删除改列数据
  4. 学校发现遗漏了“科学”课的成绩,请为学生添加“科学”成绩。学生的成绩为(97,87,78,76,84,88,91)
  姓名 语文 数学 英语 体育
1 张三 89 59 84 0
2 李四 78 83 97 0
3 王五 79 85 88 0
4 小明 89 92 83 0
5 小红 90 67 67 0
6 小刚 87 81 73 0
7 小亮 83 77 71 0

8. 用pandas读取lianjia.csv,完成下列操作

  1. 观察结构,调整列索引顺序(Region, Garden, Layout, Floor, ID, Year, Size, Elevator, Direction, Renovation, Price)
  2. 增加一列关于目前状况(状况:state,可以使用1代表售出,0代表未售出)
  3. 删除ID这一列无用的数据
  4. 查找楼层(floor)小于7的所有房屋
  5. 修改楼层小于7的房源的电梯状态,统一改成无电梯,反之就设为有电梯

第二次作业:数据可视化基础练习

Due: 2026-04-08 closed
Upload Link: 英雄请明年再来

Exercise Requirements

1. 折线图练习

  1. 读取长沙市某年5月份的气温数据(changsha.csv),按照时间顺序绘制成折线图;
  2. “highest”为当天最高气温,“lowest”为当天最低气温;
  3. 使用圆点表示数据点;
  4. x轴是是时间,y轴是温度,要求图中有具体刻度;
  5. x轴的标题是“时间(天)”,y轴的标题是“气温(摄氏度)”;
  6. 图标题是“长沙5月份气温走势”图。

2. 柱状图练习

  1. 读取三类学校(普通本科、中等职业教育、普通高中)2014-2018年间的招生数据(enrollment.csv),绘制柱状图;
  2. x轴是年份,y轴是当年的招生人数(万人);
  3. 按年份进行分组绘制,同一年份的放在一个组;
  4. 要求绘制图例,图例横向排列(提示:使用legend的ncol参数,具体用法自行查Matplotlib官网);
  5. 图标题是”2014-2018普通本科、中等职业教育、普通高中招生人数“

3. 直方图练习

  1. 读取scores.csv,绘制直方图;
  2. 读取csv文件之后生成DataFrame对象;
  3. 绘制其中历史成绩(“history”)的直方图;
  4. 标记x轴的坐标;
  5. 每个柱面上方显示处于该区间内成绩数量;
  6. 图标题是”x班历史成绩直方图“。

4. 散点图练习

  1. 分别读取4个城市的二手车数据(bj.csvsh.csvgz.csvsz.csv),将其归档到同一个DataFrame中;
  2. 计算车辆的使用年份和保值率,并在DataFrame新增对应的字段存储数据;
  3. 使用年份=当前时间-购买时间;
  4. 保值率=二手车价格 / 新车价格;
  5. 绘制使用年份与保值率的散点图,观察并简单分析其分布特征;
  6. 绘制行驶距离与保值率的散点图,观察并简单分析其分布特征。

5. 饼图练习

  1. 将给定的数据绘制成饼图;
  2. 设置阴影效果;
  3. 将Chrome对应分块从饼图中分离出来,距离设为0.05;
  4. 设置显示分块占比信息,保留两位小数;
  5. 占比信息以白色文字显示,分块名以黑色文字显示;
  6. 将Edge和Safari的占比的字体大小设置为10,其余为12。
Chrome Internet Explorer FireFox Edge Safari 其他浏览器
0.6098 0.1218 0.1147 0.0415 0.0372 0.075

6. 箱线图练习

  1. 读取scores.csv中的数据绘制成箱线图;
  2. 同一张图上每个科成绩对应一个箱线;
  3. 观察所绘制的箱线图,简单分析一下。

7. 综合练习

  1. 读取lianjia.csv,按照一下要求绘图;
  2. 使用一个Figure绘制3张图;
  3. 绘制条形图,x轴数据为行政区(Region),y轴数据为各个区平均每平米的单价;
  4. 绘制箱线图,x轴数据为行政区(Region),y轴数据为每平米的单价;
  5. 绘制swarm图,x轴数据为行政区(Region),y轴数据为每平米的单价;
  6. 使用FacetGrid绘制尺寸与单元的关系图,需要区分是否有电梯。

第三次作业:相似度与相关度

Due: 2026-04-15 closed
Upload Link: 英雄请明年再来

Exercise Requirements

1. 下列是两个用户的采买清单

  1. 用户A:{电脑、鼠标、键盘}
  2. 用户B:{手机、耳机、电脑、鼠标}

计算这两个用户的Jaccard相似度,并说明该指标适用于什么类似的数据。

2. 下表里有5个学生的线性代数与机器学习成绩,柱状图练习

  1. 直觉判断Pearson相关系数的正负与大小
  2. 通过代码计算验证
学生 线性代数 机器学习
A 60 65
B 70 72
C 80 78
D 90 88
E 100 95

第四次作业:关联规则挖掘

Due: 2026-04-22 active

Exercise Requirements

1. 根据一份开源零售数据,编写Python代码求解。分别调用mlxtend的apriori模块(或efficient-apriori)实现Apriori算法,以及调用mlxtend的fp-growth模块(或pyfpgrowth)实现FP-Growth算法。

  1. 设定一组不同的最小支持度阈值(例如:0.01、0.05、0.1、0.2);
  2. 记录两种算法在不同阈值下的运行时间和峰值内存消耗(内存消耗选做);
  3. 绘制”支持度阈值-运行时间“的折线对比图;
  4. 深度分析报告,回答一下问题:
    1. 当最小支持度阈值极低时,哪个算法的性能下降更剧烈?为什么?
    2. 结合Apriori的”候选集生成“与FP-Growth的”FP-Tree“数据结构,从时间复杂度和空间复杂度的角度解释实验观察到的现象。

数据集:https://archive.ics.uci.edu/dataset/352/online+retail

2. 根据一份“城市交通记录”的开源数据,编写Python代码。

  1. 数据离散化与转换,关联规则算法无法直接处理连续值,要求将数值型或连续型特征进行离散化。
    1. 将时间离散为“早高峰、晚高峰、平峰”;
    2. 将空间离散为“商业区道路、住宅区道路、高架桥”。
  2. 设置合理的最小支持度和置信度,挖掘导致 “重度拥堵”的频繁项集。
  3. 业务洞察 (Business Insight):
    1. 挑选出 3 条具有极高现实指导意义的关联规则(例如:{雨天, 晚高峰, 高架桥} => {重度拥堵})。
    2. 假设你是城市交通管理部门的顾问,基于这 3 条规则,提出具体的交通疏导或预警系统优化建议。

数据集位置:https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page