如何使用sort_values?如何基于mean列对给定电影评分数据集排序?
关于pandas中
sort_values()的使用及你的电影数据集排序方案 嘿,我来给你拆解这两个问题,都是日常用pandas处理数据时的高频操作,很实用的!
1. 怎么用sort_values()?
sort_values()是pandas里用来给DataFrame或Series排序的核心方法,用法灵活,我给你梳理几个常见场景:
- 单列基础排序:最常用的就是按某一列排序,只需要给
by参数传入列名就行。默认是升序(从小到大),如果要降序,就把ascending参数设为False。
举个简单例子:# 按"score"列升序排序 df_sorted_up = df.sort_values(by="score") # 按"score"列降序排序 df_sorted_down = df.sort_values(by="score", ascending=False) - 多列优先级排序:如果需要先按A列排序,A列相同的再按B列排序,就给
by传一个列名列表,还可以给每个列单独指定排序方向,用ascending传对应的布尔值列表。
比如:# 先按"size"升序,再按"mean"降序排序 df_sorted_multi = df.sort_values(by=["size", "mean"], ascending=[True, False]) - 小细节补充:
- 如果数据里有空值,用
na_position控制它们的位置:na_position="first"把空值放最前面,默认"last"放最后。 - 排序后如果想重置索引(让索引从0开始连续编号),加上
ignore_index=True就行,不用手动再调索引。
- 如果数据里有空值,用
2. 你的电影评分数据集怎么按mean列排序?
先假设你已经把这份电影数据加载成了pandas的DataFrame,比如叫movie_ratings,数据结构大概是这样:
| title | size | mean |
|---|---|---|
| 'Til There Was You (1997) | 9 | 2.333333 |
| 1-900 (1994) | 5 | 2.600000 |
| 101 Dalmatians (1996) | 109 | 2.908257 |
| 12 Angry Men (1957) | 125 | 4.344000 |
| 187 (1997) | 41 | 3.024390 |
接下来分两种需求给你写代码:
需求1:按mean升序排序(从最低分到最高分)
默认就是升序,代码可以这么写:
# 升序排序,ascending=True可以省略不写 sorted_mean_asc = movie_ratings.sort_values(by="mean")
排序后结果里,评分最低的'Til There Was You (1997)会排在最前面,评分最高的12 Angry Men (1957)在最后。
需求2:按mean降序排序(从最高分到最低分)
如果想优先看评分高的电影,就用降序:
# 指定ascending=False实现降序 sorted_mean_desc = movie_ratings.sort_values(by="mean", ascending=False)
这时候12 Angry Men (1957)会排在第一位,'Til There Was You (1997)在最后。
额外优化:排序后重置索引
要是你觉得排序后的原索引看着乱,想让索引从0开始重新排,加个ignore_index=True就行:
sorted_mean_desc = movie_ratings.sort_values(by="mean", ascending=False, ignore_index=True)
内容的提问来源于stack exchange,提问作者mazdak dalkoohi
相关产品推荐
相关产品推荐

