Pandas的cut()函数可以将一列连续的数值数据转换成分类数据。在这个过程中,cut()函数会自动将一列连续数据根据一组分割点(bins)进行分段,然后将每一段数据赋予一个对应的标签(label)。
基本语法
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True)
参数说明:
- x: 需要分段的数据,可以是array、Series、DataFrame。
- bins: 在哪些点将数据分段。可以是一个数值数量指定分段数量;也可以是一组数值指定划分点。
- right: 是否包含右端点。
- labels: 分类标签。
- retbins: 是否返回分段点。
- precision: 算法使用分割点的小数点精度,建议使用默认值。
- include_lowest: 以最小值为起点。
- duplicates: 如果后面的值和前面的值相等,却想放到不同bin里面,可以使用不同的方法: “raise”、“drop”、“raise”。
- ordered: 结果是否是有序的。
示例
假设我们有一个身高(height)的DataFrame,以下是如何使用cut()函数进行分段。
import pandas as pd
data = pd.DataFrame({
'height': [162, 170, 172, 180, 190]
})
bins = [0, 165, 175, 200]
labels = ['short', 'normal', 'tall']
data['height_cat'] = pd.cut(data['height'], bins=bins, labels=labels)
print(data)
输出:
height height_cat
0 162 short
1 170 normal
2 172 normal
3 180 tall
4 190 tall
首先,我们创建了一个高度的DataFrame,其中有5个样本。然后定义了三个分割点, 包括垂直的高度大于165和小于175和175以上。之后编写了标签(身高小于165的人分类为矮个子,170-175为普通,大于175的人分类为高个子)。最后将新的分类保存到名为”height_cat”的新列下。
总结一下,cut()函数为连续数据提供了自动分类的基础,让我们可以方便地将一类数据转化为分类数据以便更方便的统计和分析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas Cut–从连续到分类 - Python技术站