如何计算每个用户的评分平均值?
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
。
假设我有这样的数据集:
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
。