Python 收视率最高的前五部电影

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

我现在面临一个小问题。我正在使用电影镜头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','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分(我甚至可以说出他们的性别、年龄、职业代码和邮政编码)。我现在正在看:)但我最初的问题得到了回答:)