如何计算每个用户的收视率平均值?

问题描述:

假设我有一个这样的数据集:如何计算每个用户的收视率平均值?

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

的问题是,我怎么能计算每个用户的平均等级? 我看到this answer,但我不太明白。如果你展示一些指导,我会非常感谢你的时间。

+0

请发布[最小,完整和可验证示例](http://*.com/help/mcve)。所有相关部分应该在你的问题中,而不是在链接中(目前不起作用)。 –

+0

我仔细检查了链接,他们工作。我想我给出的例子很少。尽管我尝试过。对不起,我是初学者。 – Silvia07

+0

好的。其中一个链接现在起作用。另一个仍然给*对不起,出了点问题。*这可能会自行解决。但是工作簿非常大。当您发布自我包含的问题以及迄今为止的尝试时,您会得到最快最好的答案。 –

我在IPython Notebook中工作。

让我们假设你有这样的文件user_ratings.csv

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

的例子中,链路使用大熊猫。所以进口大熊猫:

In [1]: import pandas as pd 

阅读您的文件转换成数据帧:

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

enter image description here

集团用户和计算每个均值:

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

enter image description here

您还可以创建在df新列名为user_avg_rating的分配平均得分每个用户给它:

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

enter image description here

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

+0

非常感谢!另一个小问题:如何将此平均评分列添加到第一个数据集?我认为代码会是这样的? - 'df ['user_avg_rating'] = df.groupby('user_id')['user_id']。transform('mean')' – Silvia07

+0

为我的问题增加了一个例子。 –

+0

如果解决了您的问题,您可以[接受](http://*.com/help/accepted-answer)一个答案。 –