如何根据评论查找每部电影的平均得分-Python

时间:2020-05-18 14:54:21

标签: python python-3.x pandas dataframe recommendation-engine

我有这样的数据框。

    UserID  Review      MovieID
0   10112   Good        MOV001
1   10112   Excellent   MOV002
2   10112   Average     MOV003
3   10113   Good        MOV001
4   10113   Bad         MOV002
5   10113   Good        MOV003
6   10113   Excellent   MOV004
7   10114   Good        MOV001
8   10114   Bad         MOV002
9   10114   Good        MOV003
10  10114   Excellent   MOV004

我已将评论更改为int值。

movies.Review[movies.Status == 'Average'] = 2
movies.Review[movies.Status == 'Good'] = 3
movies.Review[movies.Status == 'Excellent'] = 5
movies.Review[movies.Status == 'Very Good'] = 4
movies.Review[movies.Status == 'Okay'] = 1
movies.Review[movies.Status == 'Bad'] = 0
movies

现在我的数据框将如下所示,

UserID  Review      MovieID
0   10112   3           MOV001
1   10112   5           MOV002
2   10112   2           MOV003
3   10113   3           MOV001
4   10113   0           MOV002
5   10113   3           MOV003
6   10113   5           MOV004
7   10114   3           MOV001
8   10114   0           MOV002
9   10114   3           MOV003
10  10114   5           MOV004

现在如何根据“评论”找到每部电影的平均得分?有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

首先,您不需要那些movies.Review[movies.Status==...] = ...。而是使用np.selectmap

Status_convert = {'Bad':0, 'Okay':1, 'Average':2,
                   'Good':3, 'Very Good':4, 'Excellent':5}
movies['Review'] = movies.Status.map(Status_convert)

然后您可以做:

df.groupby('MovieID')['Review'].mean()

输出:

MovieID
MOV001    3.000000
MOV002    1.666667
MOV003    2.666667
MOV004    5.000000
Name: Review, dtype: float64