Python实现连续数据的离散化处理主要基于两个函数,pandas.cut和pandas.qcut,前者根据指定分界点对连续数据进行分箱处理,后者则可以根据指定箱子的数量对连续数据进行等宽分箱处理,所谓等宽指的是每个箱子中的数据量是相同的。下面简单介绍一下这两个函数的用法:
# 导入pandas包
import pandas as pd
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32] # 待分箱数据
bins = [18, 25, 35, 60, 100] # 指定箱子的分界点
# labels参数为False时,返回结果中用不同的整数作为箱子的指示符
cats = pd.cut(ages, bins,labels=False)
cats # 输出结果中的数字对应着不同的箱子
输出cats
array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int64)
labels是输出对应的标签名
# 可以将想要指定给不同箱子的标签传递给labels参数
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
cuts3 = pd.cut(ages, bins, labels=group_names)
cuts3
pandas.qcut函数:是均匀分配,每个区间的样本数相同
qcats1 = pd.qcut(ages,q=4) # 参数q指定所分箱子的数量
qcats1