1. 导入CSV文件
首先,我们需要导入csv库来处理CSV文件。CSV(逗号分隔值)是一种常用的存储数据的文件格式,以逗号作为字段的分隔符。
import csv
接下来,我们需要读取CSV文件并将数据存储在内存中以便后续处理。假设我们有一个名为data.csv
的CSV文件,其中包含了每条商品的评分数据。
filename = 'data.csv'
with open(filename, 'r') as file:
reader = csv.reader(file)
data = list(reader)
2. 计算每条商品的平均评分
现在我们有了包含了商品评分数据的data
列表,我们可以开始计算每条商品的平均评分。
首先,我们需要确定每条商品的评分所在的列。假设评分数据在CSV文件的第二列(索引为1),我们可以使用enumerate
函数来遍历每一行,并计算每条商品的评分总和和数量。
ratings_sum = {}
ratings_count = {}
for row in data[1:]:
item = row[0] # 商品名称所在的列
rating = float(row[1]) # 评分所在的列
if item in ratings_sum:
ratings_sum[item] += rating
ratings_count[item] += 1
else:
ratings_sum[item] = rating
ratings_count[item] = 1
ratings_sum
和ratings_count
都是字典,用来存储每条商品的评分总和和数量。我们通过遍历每条数据,将每个商品的评分累加到对应的总和上,同时记录该商品的评分数量。
最后,我们可以通过除以评分数量,计算出每条商品的平均评分。
ratings_avg = {}
for item in ratings_sum:
avg = ratings_sum[item] / ratings_count[item]
ratings_avg[item] = avg
现在,我们已经得到了每条商品的平均评分。我们可以将结果保存到一个新的CSV文件中,方便后续使用。
output_file = 'ratings_avg.csv'
with open(output_file, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Item', 'Average Rating'])
for item in ratings_avg:
writer.writerow([item, ratings_avg[item]])
在上面的代码中,我们创建了一个名为ratings_avg.csv
的新文件,并将商品名称和平均评分写入文件的第一行。然后,我们遍历ratings_avg
字典,并将每条商品的名称和平均评分写入一行。
3. 总结
通过使用csv库,我们可以方便地读取和处理CSV文件。在本文中,我们演示了如何使用csv库计算每条商品的平均评分,并将结果保存到一个新的CSV文件中。
通过导入CSV文件,我们将数据存储在内存中以便后续处理。然后,我们遍历数据,计算每条商品的评分总和和数量。最后,我们通过除以评分数量,计算出每条商品的平均评分。
这种方法可以很容易地扩展到处理更大的CSV文件,可以处理包含数千条商品的数据。