Python数据科学查找女性收视率最高的电影

时间:2018-09-24 06:11:33

标签: python pandas data-science

我正在为我的数据科学课布置作业。我只是需要入门帮助,因为我无法理解如何使用熊猫进行分组和选择DISTINCT值。

我需要找到 FEMALES 中具有最高评分的电影,我的代码返回的电影是ratings = 5gender = '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

我只需要一些入门帮助,功课还有很多,但是一旦我弄清楚了,我就可以做剩下的事情。只需要一个快速入门。非常感谢

mv_id 标题 类型 评分 user_id 性别

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   

1 个答案:

答案 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部电影绝对获得女性五星级评级。