Menu
CoddyTech

列的直方图

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

诊所晚上的等待时间是否比早上更长?把两个直方图绘制在同一坐标轴上,一眼就能看出答案:

两个半透明的诊所等待时间直方图:左侧是早上 6 到 16 分钟,右侧是晚上 13 到 28 分钟,两者略有重叠

直接把一列传给 ax.hist。保留每组的行,然后在同一坐标轴上绘制两组数据:

# waits 包含 shift 和 minutes 两列
morning = waits[waits["shift"] == "morning"]
evening = waits[waits["shift"] == "evening"]
fig, ax = plt.subplots()
ax.hist(morning["minutes"], bins=4, alpha=0.5, label="morning")
ax.hist(evening["minutes"], bins=4, alpha=0.5, label="evening")
ax.set_title("Clinic Waits")
ax.set_xlabel("Minutes")
ax.legend()
plt.show()

alpha=0.5 会让柱形半透明(0 表示不可见,1 表示不透明),这样重叠部分仍然清晰可见。label= 用于为图例中的每一项命名。

当各组分布在不同的范围内时,该列有助于模型区分它们。

challenge icon

挑战

中等

一家办公室询问员工通勤上班需要多长时间:commute.csv 中包含 mode(bike 或 bus)和 minutes。哪种出行方式的耗时分布更分散?起始代码将每组数据分别存放在 bike 和 bus 中,并设置好了图表框架。

为每组的 minutes 绘制直方图,使用 bins=5、alpha=0.5,标签设为 bike 或 bus。

你的图表应该和下面这张去年的调查图表类似:

两张半透明的直方图,标题为 Commute Times:bike 的耗时集中在 14 到 26 分钟之间,bus 的耗时分布在 15 到 45 分钟之间,并带有图例

柱形覆盖的分钟数范围更大的那组,耗时分布也更分散。Coddy 会在输出中描述你的图表。

亲手试试

import pandas as pd
import matplotlib.pyplot as plt

trips = pd.read_csv("commute.csv")
bike = trips[trips["mode"] == "bike"]
bus = trips[trips["mode"] == "bus"]

fig, ax = plt.subplots()
ax.set_title("Commute Times")
ax.set_xlabel("Minutes")

# 在下方编写你的代码

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

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

数据与图表中的所有课

自己练习: Python 在线编译器