2015-12-22 93 views
0

假設我有一個這樣的數據集:如何計算每個用戶的收視率平均值?

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

的問題是,我怎麼能計算每個用戶的平均等級? 我看到this answer,但我不太明白。如果你展示一些指導,我會非常感謝你的時間。

+0

請發佈[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。所有相關部分應該在你的問題中,而不是在鏈接中(目前不起作用)。 –

+0

我仔細檢查了鏈接,他們工作。我想我給出的例子很少。儘管我嘗試過。對不起,我是初學者。 – Silvia07

+0

好的。其中一個鏈接現在起作用。另一個仍然給*對不起,出了點問題。*這可能會自行解決。但是工作簿非常大。當您發佈自我包含的問題以及迄今爲止的嘗試時,您會得到最快最好的答案。 –

回答

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://stackoverflow.com/help/accepted-answer)一個答案。 –