Menu
CoddyTech

数据分组

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

哪个城市卖得更多?对所有行求一个平均值无法回答这个问题。把各行按城市分成几组,每个城市一组,然后分别计算每组的平均值:

6 条商店记录按城市分成三组,分别是 Lyon、Nice 和 Paris,然后计算每组的平均值:Lyon 为 23.0,Nice 为 18.0,Paris 为 38.0

一行代码就能完成两件事:

shops = pd.DataFrame({
    "city": ["Lyon", "Paris", "Lyon", "Nice", "Paris", "Lyon"],
    "sales": [20, 35, 26, 18, 41, 23],
})
means = shops.groupby("city")["sales"].mean()
print(means)

这会输出:

city
Lyon     23.0
Nice     18.0
Paris    38.0
Name: sales, dtype: float64

groupby("city") 会将数据分组,["sales"] 会选取这一列,.mean() 会计算每组的平均值。.sum()、.min() 和 .max() 也可以使用。

要对这些堆进行排名,请将它们排序:means.sort_values(ascending=False).index[0] 是销量最好的 Paris。

challenge icon

挑战

中等

一个跑步俱乐部会在 runs.csv 中记录每次跑步的数据:runner、distance_km、minutes 和 climb_m。起始代码会将一个数值列读入 column。

  1. 打印每位跑步者在该列中的平均值。
  2. 然后指出平均值最大的跑步者,如下方最后一行所示。

对于一个有两位跑步者的俱乐部,以及 distance_km:

runner
Ana    6.1
Bo     8.4
Name: distance_km, dtype: float64
Top runner: Bo with 8.4

亲手试试

import pandas as pd

runs = pd.read_csv("runs.csv")
column = input()

# 在下方编写你的代码
quiz icon自我测试

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

数据与图表中的所有课

自己练习: Python 在线编译器