📚 Big Data Programming
There are 4 BDG homeworks.
第一次作业:数据处理基础练习
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行和第3行的数据
- 取出第1行到第3行的数据
- 取出前4列的数据
- 取出该数组的
(0, 0)、(1, 2)、(3, 5)位置上的元素值
5. 求数组data7 = np.random.randint(0, 20, size=(4, 5))中每行最小值与最大值相除的结果。
6. 完成下列关于Series的练习
- 用下表中数据创建Series对象(对象名为“score”,索引名为class)
- 查看1-5班的数据
- 查看哪个班级的平均成绩还没有录入
- 获取全年级的平均成绩(空值做0分处理)
- 由于参考答案有误,现在要给每位同学的成绩加上2分
- 找出平均成绩在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的练习
- 根据下表创建DataFrame对象(列表和字典各用一种实现)
- 对创建的DataFrame进行转置
- 由于体育老师生病,导致大家的体育成绩没有录入,请删除改列数据
- 学校发现遗漏了“科学”课的成绩,请为学生添加“科学”成绩。学生的成绩为
(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,完成下列操作
- 观察结构,调整列索引顺序(Region, Garden, Layout, Floor, ID, Year, Size, Elevator, Direction, Renovation, Price)
- 增加一列关于目前状况(状况:state,可以使用1代表售出,0代表未售出)
- 删除ID这一列无用的数据
- 查找楼层(floor)小于7的所有房屋
- 修改楼层小于7的房源的电梯状态,统一改成无电梯,反之就设为有电梯
第二次作业:数据可视化基础练习
Upload Link:
英雄请明年再来
Exercise Requirements
1. 折线图练习
- 读取长沙市某年5月份的气温数据(
changsha.csv),按照时间顺序绘制成折线图; - “highest”为当天最高气温,“lowest”为当天最低气温;
- 使用圆点表示数据点;
- x轴是是时间,y轴是温度,要求图中有具体刻度;
- x轴的标题是“时间(天)”,y轴的标题是“气温(摄氏度)”;
- 图标题是“长沙5月份气温走势”图。
2. 柱状图练习
- 读取三类学校(普通本科、中等职业教育、普通高中)2014-2018年间的招生数据(
enrollment.csv),绘制柱状图; - x轴是年份,y轴是当年的招生人数(万人);
- 按年份进行分组绘制,同一年份的放在一个组;
- 要求绘制图例,图例横向排列(提示:使用legend的ncol参数,具体用法自行查Matplotlib官网);
- 图标题是”2014-2018普通本科、中等职业教育、普通高中招生人数“
3. 直方图练习
- 读取
scores.csv,绘制直方图; - 读取csv文件之后生成DataFrame对象;
- 绘制其中历史成绩(“history”)的直方图;
- 标记x轴的坐标;
- 每个柱面上方显示处于该区间内成绩数量;
- 图标题是”x班历史成绩直方图“。
4. 散点图练习
- 分别读取4个城市的二手车数据(
bj.csv、sh.csv、gz.csv和sz.csv),将其归档到同一个DataFrame中; - 计算车辆的使用年份和保值率,并在DataFrame新增对应的字段存储数据;
- 使用年份=当前时间-购买时间;
- 保值率=二手车价格 / 新车价格;
- 绘制使用年份与保值率的散点图,观察并简单分析其分布特征;
- 绘制行驶距离与保值率的散点图,观察并简单分析其分布特征。
5. 饼图练习
- 将给定的数据绘制成饼图;
- 设置阴影效果;
- 将Chrome对应分块从饼图中分离出来,距离设为0.05;
- 设置显示分块占比信息,保留两位小数;
- 占比信息以白色文字显示,分块名以黑色文字显示;
- 将Edge和Safari的占比的字体大小设置为10,其余为12。
| Chrome | Internet Explorer | FireFox | Edge | Safari | 其他浏览器 |
|---|---|---|---|---|---|
| 0.6098 | 0.1218 | 0.1147 | 0.0415 | 0.0372 | 0.075 |
6. 箱线图练习
- 读取
scores.csv中的数据绘制成箱线图; - 同一张图上每个科成绩对应一个箱线;
- 观察所绘制的箱线图,简单分析一下。
7. 综合练习
- 读取
lianjia.csv,按照一下要求绘图; - 使用一个Figure绘制3张图;
- 绘制条形图,x轴数据为行政区(Region),y轴数据为各个区平均每平米的单价;
- 绘制箱线图,x轴数据为行政区(Region),y轴数据为每平米的单价;
- 绘制swarm图,x轴数据为行政区(Region),y轴数据为每平米的单价;
- 使用FacetGrid绘制尺寸与单元的关系图,需要区分是否有电梯。
第三次作业:相似度与相关度
Upload Link:
英雄请明年再来
Exercise Requirements
1. 下列是两个用户的采买清单
- 用户A:{电脑、鼠标、键盘}
- 用户B:{手机、耳机、电脑、鼠标}
计算这两个用户的Jaccard相似度,并说明该指标适用于什么类似的数据。
2. 下表里有5个学生的线性代数与机器学习成绩,柱状图练习
- 直觉判断Pearson相关系数的正负与大小
- 通过代码计算验证
| 学生 | 线性代数 | 机器学习 |
|---|---|---|
| A | 60 | 65 |
| B | 70 | 72 |
| C | 80 | 78 |
| D | 90 | 88 |
| E | 100 | 95 |
第四次作业:关联规则挖掘
Upload Link:
作业上传连接(点这里)
Exercise Requirements
1. 根据一份开源零售数据,编写Python代码求解。分别调用mlxtend的apriori模块(或efficient-apriori)实现Apriori算法,以及调用mlxtend的fp-growth模块(或pyfpgrowth)实现FP-Growth算法。
- 设定一组不同的最小支持度阈值(例如:0.01、0.05、0.1、0.2);
- 记录两种算法在不同阈值下的运行时间和峰值内存消耗(内存消耗选做);
- 绘制”支持度阈值-运行时间“的折线对比图;
- 深度分析报告,回答一下问题:
- 当最小支持度阈值极低时,哪个算法的性能下降更剧烈?为什么?
- 结合Apriori的”候选集生成“与FP-Growth的”FP-Tree“数据结构,从时间复杂度和空间复杂度的角度解释实验观察到的现象。
数据集:https://archive.ics.uci.edu/dataset/352/online+retail
2. 根据一份“城市交通记录”的开源数据,编写Python代码。
- 数据离散化与转换,关联规则算法无法直接处理连续值,要求将数值型或连续型特征进行离散化。
- 将时间离散为“早高峰、晚高峰、平峰”;
- 将空间离散为“商业区道路、住宅区道路、高架桥”。
- 设置合理的最小支持度和置信度,挖掘导致 “重度拥堵”的频繁项集。
- 业务洞察 (Business Insight):
- 挑选出 3 条具有极高现实指导意义的关联规则(例如:{雨天, 晚高峰, 高架桥} => {重度拥堵})。
- 假设你是城市交通管理部门的顾问,基于这 3 条规则,提出具体的交通疏导或预警系统优化建议。
数据集位置:https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page