python中关于子集的代码解释

python中关于子集的代码解释,python,pandas,Python,Pandas,我有一个特别的代码来寻找一年中收视率最高的电影,它是这样的: best_movies = [] for year, subset in data.groupby('year'): is_best_movie = subset.rating == subset.rating.max() best_movies.append([year,subset[is_best_movie].title.values[0], subset.rating.max()]) best_df = pd.

我有一个特别的代码来寻找一年中收视率最高的电影,它是这样的:

best_movies = []
for year, subset in data.groupby('year'):
    is_best_movie = subset.rating == subset.rating.max()
    best_movies.append([year,subset[is_best_movie].title.values[0], subset.rating.max()])
best_df = pd.DataFrame(best_movies,columns=['year','title','rating'])
best_df.tail() 

有谁能解释一下
子集的作用以及它与
是最佳电影的关系,因为我正在努力寻找有史以来收视率最低的电影,而且今年我遇到了一些问题

是最好的电影
是一个逻辑向量,如果这部电影的评级是最大值,
则为False

你提供的数据很少,这就像是一个猜测游戏。然而,我相信我的猜测是可能的

这一行:

for year, subset in data.groupby('year'):
表明
数据
是一个
数据框
,从这一行和下面它包含
年份
标题
评级

因此,当您执行
data.groupby('year')
时,您会将同一年中的所有电影分组在一起,这就是
子集
所包含的内容

is_best_movie = subset.rating == subset.rating.max()
这一行将
是最好的电影
转换成一个布尔序列,其长度等于
子集
的长度,其中除具有最大评级的电影(可能有多个具有最大评级的电影)外,所有内容均为假。因此,当我们做
subset[是最佳电影]
时,我们只会得到那一年中收视率最高的台词

best_movies.append([year,subset[is_best_movie].title.values[0], subset.rating.max()])
在这里,今年第一部(有点随机)收视率最高的电影,以及收视率最高的电影,都作为子列表添加到一个名为
最佳电影
的列表中

在这里:

best_df = pd.DataFrame(best_movies,columns=['year','title','rating'])
此列表再次转换为
数据帧

所以我们有一个数据框,我想它有很多电影,它们的年份,它们的评级,最后我们有一个数据框,列出了每年“最好”的电影

如果你想找到有史以来收视率最低的电影,我想你可以:

data.sort('rating').iloc[:10]
例如,这将为你带来10部最差收视率的电影

或者,如果按照评论中的建议,你想要每年最差的电影,你需要更改两行:

is_best_movie = subset.rating == subset.rating.min()
best_movies.append([year,subset[is_best_movie].title.values[0], subset.rating.min()])

不,我们不能。我们需要更多的代码。子集变量从何而来?你说的“年度问题”是什么意思?你从哪里得到的代码,你到底不明白它的作用是什么?@DarthKotik:我不明白为什么在这个简短的代码示例中,
子集
变量是一个问题。它在第二行的元组解包步骤中定义,只包含
数据
中的行子集,
数据
列中的值等于第2行中定义的本地
变量。我喜欢你的答案。不幸的是,OP没有明确说明他们的问题。我认为
有史以来收视率最低的电影
指的是
每年收视率最低的电影
。这是对原始代码段的一个相当简单的修改,只要OP弄清楚所有定义的变量都包含什么。谢谢@Korem。我很抱歉给你添麻烦,还有一个未澄清的问题,但你得到了我的答案。我非常感谢你!