「练习」统计书本的平均评分
原创2020年8月12日大约 2 分钟...约 716 字
统计书本的平均评分
- 读取文件 rating.txt 中的的数据并分析
- 共有 10000 本书,以数字 id 表示
- 每个用户的打分为1~5
- 每一行数据有 3 个数字:分别表示用户 ID,书本 ID,该用户对该书的打分
要求输出: 所有书本各自的平均得分 数据集链接:https://www.bornforthis.cn/data-analysis-data-set 请将你的代码,在下方留言。 题目解析已经答案,请自行购买: https://www.yuque.com/aiyuechuang/fisb2l/fus7c5 作业解析 文件较大,没必要在测试的时候每次读取全部数据,我们可以创建个数据副本,数据少一些。
- 读取数据并转换为整数
import numpy as np
data = np.genfromtxt('rating.txt', delimiter=',')
data = data.astype(int)
print(data)
- 创建两个数组分别存放各个书籍的总评分和总评分人数
rating_sum = np.zeros(10000)
rating_people_count = np.zeros(10000)
- For 循环读取每行的数据
for rating in data:
book_id = rating[1] - 1
rating_sum[book_id] += rating[2]
rating_people_count[book_id] += 1
第一列是用户的 ID 其实对于我们这道题目来说没什么用,所以我们不需要去管它。 这里我 rating[1] - 1
是为什么减去 1 呢? 同学们应该是知道的,编程中和数组的索引都是从 0 开始的,所以 减 1 就是为了可以直接使用书本的 ID 进行索引。
- 完整代码
import numpy as np
data = np.genfromtxt('rating.txt', delimiter=',')
data = data.astype(int)
# print(data)
rating_sum = np.zeros(10000)
rating_people_count = np.zeros(10000)
for rating in data:
book_id = rating[1] - 1
rating_sum[book_id] += rating[2]
rating_people_count[book_id] += 1
# 计算方法一:
result = rating_sum / rating_people_count
print(result)
# 计算方法二:
print(np.true_divide(rating_sum, rating_people_count))
# 输出
[4.27970709 4.35135011 3.21434056 ... 4.32352941 3.70769231 4.00900901]
[4.27970709 4.35135011 3.21434056 ... 4.32352941 3.70769231 4.00900901]
欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!
公众号:AI悦创【二维码】

AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
