Pandas教程-Pandas DataFrame.cut()
当您需要将数据值分段并排序到不同的箱中时,调用 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]