Menu
CoddyTech

排序值

本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 39 课,共 60 课。

谁得分最高?排序后答案一目了然。.sort_values("col")按某一列对行排序,默认从小到大;ascending=False则从大到小排列:

左侧是原始顺序的玩家表格,箭头右侧的表格按积分从 31 到 8 排序;每一行都保留了标签,排名前两位的 Ben 和 Dee 标有 head(2)

players = pd.DataFrame({
    "player": ["Ada", "Ben", "Cy", "Dee", "Eli"],
    "points": [14, 31, 8, 22, 17],
})
top = players.sort_values("points", ascending=False)
print(top.head(2))

这会打印前 2 项:

  player  points
1    Ben      31
3    Dee      22

这些行保留了各自的标签:Ben 保留标签 1。因此,top 的第一行是 top.iloc[0],而 top.loc[0] 仍然是 Ada。

sort_values 会返回一个新表,并保持 players 不变,所以要把结果保存到一个变量中。

challenge icon

挑战

中等

应用商店会在 apps.csv 中列出应用,文件包含 app、downloads_k(千次下载)和 rating 这几列。程序会读取列名和数字 n,然后应该输出:

  1. 该列中值最大的 n 行,按值从大到小排列。
  2. Lowest: 和值最小的应用。

起始代码中有两处排序错误。请修正这两处。对于另一家商店,输入 rating 和 n = 2:

       app  downloads_k  rating
2   PetPal           88     4.9
0  Zipline          512     4.5
Lowest: Mosaic

亲手试试

import pandas as pd

apps = pd.read_csv("apps.csv")
column = input()
n = int(input())

# 这段代码输出的答案不对:请修复它。
apps.sort_values(column, ascending=False)
print(apps.head(n))
lowest = apps.sort_values(column, ascending=False)
print(f"Lowest: {lowest.iloc[0]['app']}")
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

数据与图表中的所有课

自己练习: Python 在线编译器