「练习」统计书本的平均评分

AI悦创原创2020年8月12日
大约 2 分钟

统计书本的平均评分

  1. 读取文件 rating.txt 中的的数据并分析
  • 共有 10000 本书,以数字 id 表示
  • 每个用户的打分为1~5
  • 每一行数据有 3 个数字:分别表示用户 ID,书本 ID,该用户对该书的打分

要求输出: 所有书本各自的平均得分 数据集链接:https://www.bornforthis.cn/data-analysis-data-setopen in new window 请将你的代码,在下方留言。 题目解析已经答案,请自行购买: https://www.yuque.com/aiyuechuang/fisb2l/fus7c5open in new window 作业解析 文件较大,没必要在测试的时候每次读取全部数据,我们可以创建个数据副本,数据少一些。

  1. 读取数据并转换为整数
import numpy as np

data = np.genfromtxt('rating.txt', delimiter=',')
data = data.astype(int)
print(data)
  1. 创建两个数组分别存放各个书籍的总评分和总评分人数
rating_sum = np.zeros(10000)
rating_people_count = np.zeros(10000)
  1. 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 进行索引。

  1. 完整代码
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

方法一:QQopen in new window

方法二:微信:Jiabcdefh