如何计算每个用户的评分平均值?

How to calculate the mean of ratings of each user?

假设我有这样的数据集:

userID productID rating
a          i       5
b          i       4
c          i       4 
a          j       3
b          j       5

问题是,如何计算每个用户的平均评分? 看到了this answer,但不是很明白。如果您提供一些指导,我将非常感谢您的宝贵时间。

我在 IPython 笔记本上工作。

假设您有这个文件 user_ratings.csv:

userID productID rating
a          i       5
b          i       4
c          i       4
a          j       3
b          j       5

link 中的示例使用 pandas。所以导入 pandas:

In [1]: import pandas as pd

将文件读入数据框:

In [2]: df = pd.read_csv('user_ratings.csv', delim_whitespace=True)
df 

按用户分组并计算每个用户的平均值:

In [2]: df.groupby('userID').mean()

您还可以在 df 中创建一个名为 user_avg_rating 的新列,并将每个用户的平均分数分配给它:

In [3]:  df['user_avg_rating'] = df.groupby('userID')['rating'].transform('mean')
         df

方法 transform 获取您的分组对象并创建一个系列:

In [4]:  df.groupby('userID')['rating'].transform('mean')

    0    4.0
    1    4.5
    2    4.0
    3    4.0
    4    4.5
    dtype: float64

这个系列被分配到列user_avg_rating