Python 收视率最高的前五部电影
我现在面临一个小问题。我正在使用电影镜头1M数据,并试图获得收视率最高的前5部电影Python 收视率最高的前五部电影,python,pandas,Python,Pandas,我现在面临一个小问题。我正在使用电影镜头1M数据,并试图获得收视率最高的前5部电影 movies = pandas.read_table('movies.dat', sep='::', header=None, names= ['movie_id', 'title', 'genre']) users = pandas.read_table('users.dat', sep='::', header=None, names=['user_id', 'gender','age','occupatio
movies = pandas.read_table('movies.dat', sep='::', header=None, names= ['movie_id', 'title', 'genre'])
users = pandas.read_table('users.dat', sep='::', header=None, names=['user_id', 'gender','age','occupation_code','zip'])
ratings = pandas.read_table('ratings.dat', sep='::', header=None, names=['user_id','movie_id','rating','timestamp'])
movie_data = pandas.merge(movies,pandas.merge(ratings,users))
上面的代码是我为将.dat文件合并到一个数据帧而编写的。
然后我需要根据收视率从电影数据框中选出前5名
以下是我所做的:
print(movie_data.sort('rating', ascending = False).head(5))
这似乎找到了排名前五的基础上的评级。然而,输出是:
movie_id title genre user_id \
0 1 Toy Story (1995) Animation|Children's|Comedy 1
657724 2409 Rocky II (1979) Action|Drama 101
244214 1012 Old Yeller (1957) Children's|Drama 447
657745 2409 Rocky II (1979) Action|Drama 549
657752 2409 Rocky II (1979) Action|Drama 684
rating timestamp gender age occupation_code zip
0 5 978824268 F 1 10 48067
657724 5 977578472 F 18 3 33314
244214 5 976236279 F 45 11 55105
657745 5 976119207 M 25 6 53217
657752 5 975603281 M 25 4 27510
正如你所看到的,洛基II出现了3次。我想知道我是否可以快速删除重复项,而不是再次查看列表,并以这种方式删除重复项
我看过pivot_表,但我不太确定它们是如何工作的,所以如果可以用这样的表来完成,我需要解释一下它们是如何工作的
编辑。
第一条评论确实删除了重复的内容
movie_data.drop_duplicates(subset='movie_id').sort('rating', ascending = False).head(5)
谢谢:)您可以通过调用并传递param
subset='movie\u id'
删除重复条目:
movie_data.drop_duplicates(subset='movie_id').sort('rating', ascending = False).head(5)
IIUC您可以执行
movie\u数据。删除重复项(subset='movie\u id')。排序('rating',升序=False)。确实删除了重复项的head(5)
:)非常感谢。但是,Rocky II不再在输出中^^。但我想这只是随机的,因为他们的评分都是5分。但我会调查一下:)似乎你看的不是5部最高评级的电影,而是5部至少有一次被评为5级的电影。这就是为什么你有三次《洛奇》——至少有三个人给了5分(我甚至可以说出他们的性别、年龄、职业代码和邮政编码)。我现在正在看:)但我最初的问题得到了回答:)