pd.cut()参数介绍

1
pd.cut( x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', )

x: 一维数组(对应前边例子中提到的销售业绩)

bins :整数,标量序列或者间隔索引,是进行分组的依据,

  • 如果填入整数n,则表示将x中的数值分成等宽的n份(即每一组内的最大值与最小值之差约相等);
  • 如果是标量序列,序列中的数值表示用来分档的分界值
  • 如果是间隔索引,“ bins”的间隔索引必须不重叠

right :布尔值,默认为True表示包含最右侧的数值

  • 当“ right = True”(默认值)时,则“ bins”=[1、2、3、4]表示(1,2],(2,3],(3,4]
  • bins是一个间隔索引时,该参数被忽略。

labels: 数组或布尔值,可选.指定分箱的标签

  • 如果是数组,长度要与分箱个数一致,比如“ bins”=[1、2、3、4]表示(1,2],(2,3],(3,4]一共3个区间,则labels的长度也就是标签的个数也要是3
  • 如果为False,则仅返回分箱的整数指示符,即x中的数据在第几个箱子里
  • 当bins是间隔索引时,将忽略此参数

retbins: 是否显示分箱的分界值。默认为False,当bins取整数时可以设置retbins=True以显示分界值,得到划分后的区间

precision:整数,默认3,存储和显示分箱标签的精度。

include_lowest:布尔值,表示区间的左边是开还是闭,默认为false,也就是不包含区间左边。

duplicates:如果分箱临界值不唯一,则引发ValueError或丢弃非唯一

实例

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
import numpy as np
# 创建待排序dataframe
name = [
'Tom', 'John', 'Lillian', 'Tom', 'John', 'Lillian', 'll', 'pp', 'kk', 'mm'
]
grade = [97, 83, 89, 60, 50, 80, 70, 88, 68, 78]
df_grade = pd.DataFrame(name, columns=['name'])
df_grade['grade'] = pd.DataFrame(grade)

df_grade
1
2
3
4
df_grade["分类1"] = pd.cut(x=df_grade['grade'],
bins=[0, 60, 70, 80, 90, 100],
right=False)
df_grade
1
2
3
4
5
df_grade["分类2"] = pd.cut(x=df_grade['grade'],
bins=[0, 60, 70, 80, 90, 100],
labels=['不及格', '及格', '良好', '优良', '优秀'],
right=False)
df_grade