Pandas DataFrame.cut()


Pandas DataFrame.cut()

当需要将数据值分段并将其分类到bin中时,将调用cut()方法。它用于将连续变量转换为分类变量。它还可以将一系列元素隔离到单独的容器中。该方法仅适用于一维数组状对象。

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

句法:

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

参数:

x:通常将数组作为要成为bin的输入。该数组应为一维数组。

bins:指的是int,标量序列或IntervalIndex值,这些值定义用于分割的bin边缘。大多数时候,我们拥有大规模的数值数据。因此,我们可以将这些值分组到bin中,以轻松执行描述性统计信息,作为数据模式的概括。将数据分为几组的标准如下:

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

返回值:

此方法返回两个对象作为输出,如下所示:

  • out:主要是指CategoricalSeriesndarray ,它是类似数组的对象,代表每个值对应的bin。这些对象取决于label的值。可能返回的值如下:
    • True:这是一个默认值,它返回Series或Categorical变量。这些对象中存储的值是“间隔”数据类型。
    • sequence of scalars:还返回一个Series或Categorical变量。这些对象中存储的值是序列的类型。
    • False: false值返回整数的ndarray。
  • bins:主要是指ndarray

示例1:下面的示例将数字划分为bin:

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]

Made with ❤️ in Chengdu. Copyright reserved 2019-2022.

蜀ICP备20006366号-1