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。我很抱歉给你添麻烦,还有一个未澄清的问题,但你得到了我的答案。我非常感谢你!