Menu
CoddyTech

数值分箱

本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 54 课,共 64 课。

航空公司按行李的重量级别收费,而不是按克收费。分箱会把数字转换成范围,称为箱,当你只关心范围时就可以这样做:

一条从 0 到 32 kg 的数轴,在 7 和 23 处分成三个阴影箱,分别为客舱、标准和超重;图上用圆点表示六件行李:5.5 和 7.0 在客舱箱中,12.4、18.2 和 23.0 在标准箱中,30.5 在超重箱中

pd.cut 接收数值、边界,以及每个区间对应的一个标签:

bags = pd.DataFrame({"kg": [5.5, 23.0, 18.2, 30.5, 7.0, 12.4]})
bags["class"] = pd.cut(bags["kg"], bins=[0, 7, 23, 32],
                       labels=["cabin", "standard", "heavy"])
print(bags["class"].value_counts().sort_index())

这会打印:

class
cabin       2
standard    3
heavy       1
Name: count, dtype: int64

每个区间都包含其右边界,因此 7.0 kg 仍属于客舱行李,超出边界的值会变成 NaN。

.sort_index() 会按顺序列出各个分箱,从最轻的开始。

challenge icon

挑战

中等

动物园根据 age 将 members.csv 中的成员分组:child 表示最多 12 岁,teen 表示 13 到 17 岁,adult 表示 18 到 64 岁,senior 表示 65 到 100 岁。程序会读取一个 group。

  1. 添加一列 group,记录每位成员的年龄组。
  2. 打印每个组的成员人数,先打印 child。
  3. 打印读取到的组的 visits 平均值,保留 2 位小数。

对于规模较小的动物园,输入 teen 时:

group
child     1
teen      2
adult     2
senior    1
Name: count, dtype: int64
Mean visits for teen: 10.5

亲手试试

import pandas as pd

members = pd.read_csv("members.csv")
group = input()

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

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

机器学习统计学中的所有课

自己练习: Python 在线编译器