cut与qcut区别
Pandas提供了智能剪贴功能:pd.cut()
与pd.qcut()
,它们通常用于更方便直观地处理关系型或标签型数据,将数据进行分箱/离散化
1、pd.cut()
我们可以通过两种方式使用cut()
函数:直接指定bin
的数量,让Pandas为我们计算等大小的bin
,或者我们可以按照自己的意愿手动指定bin
的边缘
在cut()
函数中,bin
边缘的间距大小是相等的,每个bin
或箱中的元素数量不均匀。例如,如果对年龄进行分箱,0-1岁是婴儿,1-12岁是孩子,12-18岁是青少年,18-60岁是成年人,60岁以上是老年人。所以我们可以设置:
bins=[0, 1, 12, 18, 60, 140]
labels=['infant', 'kid', 'teenager', 'grownup', 'senior citizen']
cut()
的API如下:
pd.cut(x,bins,right,labels,retbins,precision,include_lowest,duplicates,ordered)
其参数及说明如下:
- x:需要进行分箱的数据,1D数组或系列类型,如果数据存在NaN则报错
- bins:分箱的边界,如果是单个整数,则表示基于数据中的最小值和最大值生成等间距间隔;也可以是自定义边界值的列表或数组
- right:是否包含最右边的数值,默认为True(右闭)
- labels:分箱的标签,长度保持与分箱数一致
- retbins:是否显示分箱的边界值,默认为False。当
bins
为整数时设置True可以显示边界值 - precision:分箱边界的精度,默认3位小数
- include_lowest:是否包含最左边的数值,默认为False(左开)
- duplicates:默认为
raise
,如果分箱的边界不唯一,则引发ValueError;指定drop
则去重 - ordered:标签是否有序,默认为True,分类结果将被排序
以下是一个使用示例:
import pandas as pd
import numpy as np
# 数据准备
years = [2024, 2023,<