我正在为我的数据科学课做一项作业。我只是需要帮助开始,因为我有困难的理解如何使用熊猫分组和选择DISTINCT值。
我需要找到最高收视率的电影,由 same ,我的代码返回我的电影与ratings = 5,和gender = 'F',但它也重复同一部电影一次又一次,因为有超过一个用户。我不知道怎么才能放映电影,数数五星级的收视率,性别= 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)数据文件可以下载这里。
我只是需要一些帮助开始,还有更多的家庭作业,但一旦我知道这一点,我可以做剩下的。只是需要一步一步。非常感谢
mv_id 标题类型分级user_idE 218E 119性别<代码>E 220
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 发布于 2018-09-24 09:36:32
我会尝试对尽可能少的数据执行过滤操作。要选择女性用户的五星级评分,不需要电影元数据(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中,现在有一个DataFrame统计每个movie_id的女性用户的五星级收视率总数:
movie_id
1 253
2 15
3 14
...如果你把movie_id键上的数据加入m作为一个新专栏(我会把它作为练习留给你),那么你可以根据这个值进行排序,得到你的前10部电影,女性的绝对五星级收视率。
https://stackoverflow.com/questions/52473547
复制相似问题