我正在为我的数据科学课布置作业。我只是需要入门帮助,因为我无法理解如何使用熊猫进行分组和选择DISTINCT
值。
我需要找到 FEMALES 中具有最高评分的电影,我的代码返回的电影是ratings = 5
和gender = 'F'
,但是由于有1个以上的用户,因此它还会一遍又一遍地重复播放同一部电影。我不确定如何仅显示电影,5星级评分和性别=F。以下是我的代码:
import pandas as pd
import os
m = pd.read_csv('movies.csv')
u = pd.read_csv('users.csv')
r = pd.read_csv('ratings.csv')
ur = pd.merge(u,r)
data = pd.merge(m,ur)
df = pd.DataFrame(data)
top10 = df.loc[(df.gender == 'F')&(df.rating == 5)]
print(top10)
可以下载数据文件here
我只需要一些入门帮助,功课还有很多,但是一旦我弄清楚了,我就可以做剩下的事情。只需要一个快速入门。非常感谢
1 Toy Story (1995) Animation|Children's|Comedy 5 1 F
2 Jumanji (1995) Adventure|Children's|Fantasy 5 2 F
3 Grumpier Old Men (1995) Comedy|Romance 5 3 F
4 Waiting to Exhale (1995) Comedy|Drama 5 4 F
5 Father of the Bride Part II (1995) Comedy 5 5 F
答案 0 :(得分:0)
我将尝试对尽可能少的数据进行过滤操作。要选择女性用户的5星级评价,就不需要电影元数据(movies.csv)。可以在ur
数据上完成,比在df
上更容易。
# filter the data in `ur`
f_5s_ratings = ur.loc[(ur.gender == 'F')&(ur.rating == 5)]
# count rows per `movie_id`
abs_num_f_5s_ratings = f_5s_ratings.groupby("movie_id").size()
在abs_num_f_5s_ratings
中,您现在有了一个数据框架,该数据库计算每个movie_id女性用户获得的5星评分总数:
movie_id
1 253
2 15
3 14
...
如果您将键movie_id
上的数据与m
列为新列(我将作为练习留给您使用),则可以按此值进行排序以获得最高10部电影绝对获得女性五星级评级。