当您需要将数据值分段并排序到不同的箱中时,调用 cut() 方法。它用于将连续变量转换为分类变量。它还可以将元素数组分隔成单独的箱。该方法仅适用于一维数组样式的对象。

如果我们有一组大量的标量数据,并对其进行一些统计分析,我们可以使用 cut() 方法。

语法:

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

参数:

x: 通常是指作为输入的数组,即将进行箱分的数组。该数组应为一维数组。

bins: 它是一个 int标量序列IntervalIndex 值,用于定义分段的箱边界。大多数情况下,我们有一个非常大规模的数值数据。因此,我们可以将值分组到箱中,以便轻松执行数据的描述性统计作为数据模式的泛化。将数据分为组的标准如下:

  • int: 它定义了在 x 的范围内的相等宽度箱的数量。我们也可以在 x 的范围的两侧扩展 .1% 来包含 x 的最小值和最大值。
  • 标量序列: 它主要定义了允许非均匀宽度的箱边界。
  • IntervalIndex: 它指的是在函数中要使用的确切箱。应注意,箱的 IntervalIndex 必须是非重叠的。
  • right: 它包含一个布尔值,用于检查 bins 是否包含最右边的边缘。其默认值为 True,当 bins
  • labels: 这是一个 可选 参数,主要是指数组或布尔值。它的主要任务是为返回的指定标签。标签的长度必须与生成的箱的长度相同。如果将其值设置为 False,则仅返回整数指示符。如果 bins 是 IntervalIndex,则会忽略此参数。
  • retbins: 它是一个布尔值,用于检查是否返回箱。当 bins 作为标量值提供时,通常很有用。retbins 的默认值为 False。
  • precision: 它用于存储和显示箱标签。它包含一个整数值,默认值为 3
  • include_lowest: 它包含一个布尔值,用于检查第一个间隔是否应包含在内。
  • duplicates: 这是一个 可选 参数,决定是否引发 ValueError 或丢弃重复值,如果箱边界不是唯一的。

返回值:

此方法返回两个对象作为输出,分别是:

1.out:它主要是指一个 Categorical、Series 或 ndarray,这是一个数组样式的对象,表示每个值的相应箱。这些对象取决于 labels 的值。可能返回的值如下:

  • True: 默认值,返回 Series 或 Categorical 变量。这些对象中存储的值是 Interval 数据类型。
  • 标量序列: 它还返回 Series 或 Categorical 变量。这些对象中存储的值是序列的类型。
  • False: false 值返回一个整数数组。

2.bins: 它主要是指一个 ndarray

示例1: 下面的示例将数字分成箱段:

import pandas as pd  
import numpy as np  
info_nums = pd.DataFrame({'num': np.random.randint(1, 50, 11)})  
print(info_nums)  
info_nums['num_bins'] = pd.cut(x=df_nums['num'], bins=[1, 25, 50])  
print(info_nums)  
print(info_nums['num_bins'].unique())  

输出:

    num
0    48
1    36
2     7
3     2
4    25
5     2
6    13
7     5
8     7
9    25
10   10
    num     num_bins
0    48  (1.0, 25.0]
1    36  (1.0, 25.0]
2     7  (1.0, 25.0]
3     2  (1.0, 25.0]
4    25          NaN
5     2  (1.0, 25.0]
6    13  (1.0, 25.0]
7     5  (1.0, 25.0]
8     7  (1.0, 25.0]
9    25  (1.0, 25.0]
10   10          NaN
[(1.0, 25.0], NaN]
Categories (1, interval[int64]): [(1, 25]]

示例2: 下面的示例展示了如何为箱添加标签:

import pandas as pd  
import numpy as np  
info_nums = pd.DataFrame({'num': np.random.randint(1, 10, 7)})  
print(info_nums)  
info_nums['nums_labels'] = pd.cut(x=info_nums['num'], bins=[1, 7, 10], labels=['Lows', 'Highs'], right=False)  
print(info_nums)  
print(info_nums['nums_labels'].unique())  

输出:

   num
0    9
1    9
2    4
3    9
4    4
5    7
6    2
   num  nums_labels
0    9        Highs
1    9        Highs
2    4        Lows
3    9        Highs
4    4        Lows
5    7        Highs
6    2        Lows
[Highs, Lows]
Categories (2, object): [Lows < Highs]

标签: Pandas, Pandas教程, Pandas库, Pandas基础, Pandas学习, Pandas使用, Pandas指南, Pandas入门教程, Pandas模块, Pandas数据库, Pandas实战教程, Pandas用法总结, Pandas文档