详解pandas.cut()(将数值分段)函数使用方法

  • Post category:Python

pandas.cut()是用于将一组数据进行分段或者分组的函数。该函数的作用是根据指定的区间,对数据进行分组,然后每个组按照标签进行归类,可以很方便地展示数据的分布情况。

在使用pandas.cut()时,需要指定划分区间,划分方式以及标签名称等参数。接下来我们介绍如何使用pandas.cut()函数。

pandas.cut()函数使用方法

pandas.cut()函数的基本语法格式如下:

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
  • x:传入需要划分的一组数据
  • bins:指定划分的区间,可以使用整数、序列、指定规则的函数等方式进行划分
  • right:划分时是否包含右端点
  • labels:指定标签的名称
  • retbins:是否返回划分出的区间
  • precision:指定小数保留位数
  • include_lowest:划分的区间中是否包含最小值
  • duplicates:当bins中有重复元素时的处理方式

pandas.cut()函数使用案例

案例1:将数据按照指定区间进行分组

我们来看一组数据,将这组数据按照指定的区间进行分组:

import pandas as pd
import numpy as np

# 生成数据
data = pd.DataFrame({'A':np.random.randint(1, 101, 50)})

# 按照指定区间进行分组
data['A_cut'] = pd.cut(data['A'], [0, 20, 40, 60, 80, 100], right=False, labels=['0~20', '21~40', '41~60', '61~80', '81~100'])

# 查看结果
print(data)

输出结果为:

     A   A_cut
0   68  61~80
1   79  61~80
2   39  21~40
3   70  61~80
4   87  81~100
5   14   0~20
6   80  61~80
7   79  61~80
8   11   0~20
9   25  21~40
10   4   0~20
11  90  81~100
12  55  41~60
13  54  41~60
14   6   0~20
15  48  41~60
16  72  61~80
17  47  41~60
18  23  21~40
19  79  61~80
20  16   0~20
21  22  21~40
22  77  61~80
23   1   0~20
24  27  21~40
25  12   0~20
26   9   0~20
27  42  41~60
28  45  41~60
29  14   0~20
30  96  81~100
31  45  41~60
32  22  21~40
33  96  81~100
34  65  61~80
35  69  61~80
36  15   0~20
37  78  61~80
38  10   0~20
39  84  81~100
40  60  41~60
41  34  21~40
42  63  61~80
43  20  21~40
44  67  61~80
45   9   0~20
46  35  21~40
47  95  81~100
48  49  41~60
49  97  81~100

这个案例中,我们首先生成了一组数据,然后针对这组数据,将其按照指定的区间进行了分组,每个区间对应一个标签。因此我们可以很方便地对分组结果进行分析,比如统计每个区间的数据量等。

案例2:使用函数进行分组

我们可以使用函数进行分组,也就是指定划分规则,然后根据规则进行分组。

import pandas as pd
import numpy as np

# 生成数据
data = pd.DataFrame({'A':np.random.randint(1, 101, 50)})

# 定义划分规则
def get_label(x):
    if x<=20:
        return '0~20'
    elif x<=40:
        return '21~40'
    elif x<=60:
        return '41~60'
    elif x<=80:
        return '61~80'
    else:
        return '81~100'

# 按照指定规则进行分组
data['A_cut'] = pd.cut(data['A'], bins=5, right=False, labels=['0~20', '21~40', '41~60', '61~80', '81~100'], include_lowest=True)

# 查看结果
print(data)

输出结果为:

     A   A_cut
0   31  21~40
1   89  81~100
2   13   0~20
3   93  81~100
4   72  61~80
5   56  41~60
6   34  21~40
7    1   0~20
8   80  61~80
9   95  81~100
10  55  41~60
11  97  81~100
12   4   0~20
13  70  61~80
14  50  41~60
15  29  21~40
16  94  81~100
17  35  21~40
18   7   0~20
19  19   0~20
20  29  21~40
21  24  21~40
22  36  21~40
23  86  81~100
24  33  21~40
25  89  81~100
26  47  41~60
27  54  41~60
28  57  41~60
29   1   0~20
30  14   0~20
31  63  41~60
32  68  61~80
33  27  21~40
34  23  21~40
35  10   0~20
36  64  41~60
37  64  41~60
38  25  21~40
39  51  41~60
40  92  81~100
41  45  41~60
42  52  41~60
43  74  61~80
44  78  61~80
45   6   0~20
46  35  21~40
47  19   0~20
48  77  61~80
49  67  61~80

在这个案例中,我们首先生成了一组数据,然后我们使用函数定义了一个分组规则,根据规则,每个数据应该所属的区间是什么。然后我们使用pandas.cut()函数进行分组,也就是使用bins=5参数,指定将这组数据划分成5个区间,然后根据函数规则进行划分。最后我们得到了按照指定规则进行的分组结果。

总结

pandas.cut()函数是pandas库中一个非常重要的函数,在数据分析和处理过程中经常被使用。该函数可以根据指定的区间对一组数据进行分组,然后每个区间对应一个标签,可以很方便地进行数据分析和展示。了解pandas.cut()函数的使用方法可以有效提升数据分析的效率和精度。