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

统计书本的平均评分

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

要求输出: 所有书本各自的平均得分

数据集链接:https://www.aiyc.top/data-analysis-data-set

请将你的代码,在下方留言。

题目解析已经答案,请自行购买:

https://www.yuque.com/aiyuechuang/fisb2l/fus7c5

作业解析

文件较大,没必要在测试的时候每次读取全部数据,我们可以创建个数据副本,数据少一些。

  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悦创 » 「练习」统计书本的平均评分

Leave a Reply