Menu
CoddyTech

根据列绘制散点图

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

电池越大,续航里程就越长吗?看一眼两列数据的散点图就能找到答案,每行数据对应一个点:

标题为“电动自行车续航里程”的散点图:7 辆电动自行车以点表示,横轴为电池容量(Wh),纵轴为续航里程(km),数据从 250 Wh 和 35 km 一同上升到 750 Wh 和 110 km

列会替代列表,因此 ax.scatter 接收两列:

bikes = pd.DataFrame({
    "battery_wh": [250, 300, 400, 500, 500, 625, 750],
    "range_km": [35, 45, 60, 65, 75, 95, 110],
})
fig, ax = plt.subplots()
ax.scatter(bikes["battery_wh"], bikes["range_km"])
ax.set_title("E-bike Range")
ax.set_xlabel("Battery (Wh)")
ax.set_ylabel("Range (km)")
plt.show()

点向右上方分布,表示这些列会一起增长:这是模型可以学习的关系。如果点杂乱无章地分布,就表示没有关系。

ax.scatter 看不到列名,因此轴标签需要由你来设置。

challenge icon

挑战

中等

公园护林员测量了公园里的 12 棵树,并记录在 trees.csv 中:age_years、trunk_cm 和 height_m。哪个变量与树高相关,是树龄还是树干宽度?起始代码会将这两个名称中的一个读入 column,并设置好图表。

  1. 每棵树画一个点:横轴使用该列,纵轴使用 height_m。
  2. 用该列的名称标记 x 轴。

你的图表应该和下面这个类似,它展示了另一座公园的 crown_m:

标题为 Tree Size 的散点图,横轴为 crown_m,纵轴为 Height (m):10 个点大致向上分布,从树高约 6 m、树冠较小,到树高 14 m、树冠 7.5 m

Coddy 会分别用这两列运行你的代码,并描述每张图表。比较它们:点分布得更紧密、向上延伸的那一组能回答这个问题。

亲手试试

import pandas as pd
import matplotlib.pyplot as plt

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

fig, ax = plt.subplots()
ax.set_title("Tree Size")
ax.set_ylabel("Height (m)")

# 在下方编写你的代码

# 不要修改下面这行代码
plt.show()
quiz icon自我测试

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

数据与图表中的所有课

自己练习: Python 在线编译器