数据清洗与处理实战练习

1、有一个包含电影获奖简要信息的Excel电子表格,可从链接https://www.gnosis.cx/cleaning/Film_Awards.xlsx获取。你的任务是使用你最熟悉的语言和库,将这些数据读入一个结构良好的规范化数据框。在此过程中,你需要修复检测到的数据完整性问题。需要留意的问题示例如下:电影《1917》在简单输入单元格时被存储为数字而非字符串;某些值的拼写不一致,例如Olivia Colman的名字有一次被错误转录为“Coleman”;有一个值存在空格问题,你需要找出;在结构上,表面的平行关系并非如此,人名有时列在协会名称下,有时列在其他列下,电影名称有时列在协会下,有时列在其他地方;有些列名在同一表格区域多次出现。当你得到一个有用的数据框后,用它来回答以下总结报告中的问题:列出每部获得多个奖项的电影及其相关的奖项和年份;列出每位获得多个奖项的演员/女演员及其相关的电影和奖项;虽然在这个小数据集中没有出现,但有时演员/女演员会因多部电影获奖(通常在不同年份),确保你的代码能处理这种情况;虽然这是手动工作,但你可以研究并添加其他年份的奖项,特别是添加一些数据会显示演员因多部电影获奖,验证你的其他报告能否正确总结更大的数据集。

本题需按以下步骤完成:

  1. 使用熟悉的语言和库将Excel数据读入规范化数据框;
  2. 修复检测到的数据完整性问题,如:
    - 将电影《1917》转换为字符串
    - 修正Olivia Colman的拼写错误
    - 处理空格问题
    - 调整数据结构使人名和电影名正确归类
    - 处理重复列名
  3. 用处理好的数据框回答问题:
    - 列出获多个奖项电影的奖项和年份
    - 列出获多个奖项演员/女演员的电影和奖项
    - 确保代码能处理演员因多部电影获奖的情况
  4. 研究并添加其他年份奖项,验证报告能否正确总结更大数据集。

2、一个包含与之前电子表格大致相同简要信息的 SQLite 数据库可在以下链接获取:https://www.gnosis.cx/cleaning/Film_Awards.sqlite。本次练习要求创建与上一次练习相同的整洁数据框,并回答上一次练习中提出的相同问题。若某些问题可以直接用 SQL 回答,可直接采用该方法。在本次练习中,仅考虑 2017 年、2018 年和 2019 年的奖项,其他年份信息包含不完整,报告仅针对这三年。

可以从指定链接获取 SQLite 数据库,使用熟悉的语言和库将数据读入一个格式良好且标准化的数据框中。处理数据完整性问题后,创建与上一次练习相同的整洁数据框,用于回答上一次练习提出的问题。

- 对于能够使用 SQL 回答的问题,直接使用 SQL 进行查询。
- 报告中仅考虑 **2017 - 2019 年** 的奖项数据。

3、利用美国县的数据,创建一个额外的列,用于存储一个县的“边界框”被普查区域占用的百分比。经纬度角所围成的表面积是球面的一部分。县的形状可能不是矩形,并且可能包含不连续的区域。你可以从数学角度推导这个面积(假设地球是一个球体),也可以使用合适的地理信息系统软件进行计算。结果应该是一个数据框,其中有一个名为“occupied”的列,包含3221个介于0到1之间的浮点值。

要完成此任务,可选择从数学角度推导面积(假设地球是球体),或使用合适的GIS软件进行计算。计算后会得到一个数据框,其中 occupied 列包含 3221 个介于 0 到 1 之间的浮点值。

相关的普查数据可在以下链接找到:

4、使用数据模型的关系版本,用 SQL 回答以下简单查询:哪家餐厅获得的评论最多?在从 2023-01-01 到 2023-12-31 时间段内,哪些餐厅获得了 10 分的评论?哪种菜系获得了最高的平均评分?

以下为示例 SQL 语句。假设存在 restaurants 表(包含 restaurant_id restaurant_name 字段)、 reviews 表(包含 review_id restaurant_id rating review_date 字段)以及 restaurant_cuisine 表(包含 restaurant_id cuisine 字段)。

  1. 哪家餐厅获得的评论最多:
SELECT r.restaurant_name, COUNT(re.review_id) as review_count
FROM restaurants r
JOIN reviews re ON r.restaurant_id = re.restaurant_id
GROUP BY r.restaurant_id, r.restaurant_name
ORDER BY review_count DESC
LIMIT 1;
  1. 在从 2023-01-01 到 2023-12-31 时间段内,哪些餐厅获得了 10 分的评论:
SELECT r.restaurant_name
FROM restaurants r
JOIN reviews re ON r.restaurant_id = re.restaurant_id
WHERE re.rating = 10
  AND re.review_date BETW
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值