数据分组
本课属于 Coddy Machine Learning 学习旅程的“数据与图表”单元。第 43 课,共 60 课。
哪个城市卖得更多?对所有行求一个平均值无法回答这个问题。把各行按城市分成几组,每个城市一组,然后分别计算每组的平均值:
一行代码就能完成两件事:
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: float64groupby("city") 会将数据分组,["sales"] 会选取这一列,.mean() 会计算每组的平均值。.sum()、.min() 和 .max() 也可以使用。
要对这些堆进行排名,请将它们排序:means.sort_values(ascending=False).index[0] 是销量最好的 Paris。
挑战
中等一个跑步俱乐部会在 runs.csv 中记录每次跑步的数据:runner、distance_km、minutes 和 climb_m。起始代码会将一个数值列读入 column。
- 打印每位跑步者在该列中的平均值。
- 然后指出平均值最大的跑步者,如下方最后一行所示。
对于一个有两位跑步者的俱乐部,以及 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()
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
数据与图表中的所有课
自己练习: Python 在线编译器