Pandas cut()函数示例
时间:2020-02-23 14:42:05 来源:igfitidea点击:
1.Pandas cut()函数
Pandas cut()函数用于将数组元素分离到单独的bin中。
cut()函数仅适用于类似一维数组的对象。
2.Pandas cut()函数的用法
当我们有大量标量数据并且想要对其进行一些统计分析时,cut()函数很有用。
例如,假设我们有一个1到20之间的数字数组。
我们想将它们分为(1,10]和(10,20]的两个bin,并添加" Low"和" Highs"之类的标签。
可以使用pandas cut()函数轻松地执行此操作。
此外,我们可以对特定bin元素和label元素执行功能。
3. Pandas cut()函数语法
cut()函数的语法为:
cut( x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates="raise", )
x是要合并的输入数组。
它必须是一维的。bin定义用于分割的bin边缘。
right指示是否包括最右边的边缘,默认值为True。
标签用于为返回的垃圾箱指定标签。
retbins指定是否返回垃圾箱。
precision指定存储和显示垃圾箱标签的精度。
include_lowest指定第一个间隔是否应该为左包含。
重复项专门说明如果垃圾箱边缘不唯一时该怎么做,是引发ValueError还是丢弃非唯一变量。
4. Pandas cut()函数示例
让我们看一下pandas cut()函数的一些示例。
我将使用NumPy生成随机数以填充" DataFrame"对象。
4.1)将段号划分为垃圾箱
import pandas as pd import numpy as np df_nums = pd.DataFrame({'num': np.random.randint(1, 100, 10)}) print(df_nums) df_nums['num_bins'] = pd.cut(x=df_nums['num'], bins=[1, 25, 50, 75, 100]) print(df_nums) print(df_nums['num_bins'].unique())
输出:
num 0 80 1 40 2 25 3 9 4 66 5 13 6 63 7 33 8 20 9 60 num num_bins 0 80 (75, 100] 1 40 (25, 50] 2 25 (1, 25] 3 9 (1, 25] 4 66 (50, 75] 5 13 (1, 25] 6 63 (50, 75] 7 33 (25, 50] 8 20 (1, 25] 9 60 (50, 75] [(75, 100], (25, 50], (1, 25], (50, 75]] Categories (4, interval[int64]): [(1, 25] < (25, 50] < (50, 75] < (75, 100]]
请注意,25是bin(1,25]的一部分。
这是因为默认情况下包含最右边。
如果您不希望这样做,则将right = False
参数传递给cut()函数。
4.2)将标签添加到垃圾箱
import pandas as pd import numpy as np df_nums = pd.DataFrame({'num': np.random.randint(1, 20, 10)}) print(df_nums) df_nums['nums_labels'] = pd.cut(x=df_nums['num'], bins=[1, 10, 20], labels=['Lows', 'Highs'], right=False) print(df_nums) print(df_nums['nums_labels'].unique())
由于我们希望10成为高点的一部分,因此我们在cut()函数调用中指定right = False。
输出:
num 0 5 1 16 2 6 3 13 4 2 5 10 6 18 7 10 8 2 9 18 num nums_labels 0 5 Lows 1 16 Highs 2 6 Lows 3 13 Highs 4 2 Lows 5 10 Highs 6 18 Highs 7 10 Highs 8 2 Lows 9 18 Highs [Lows, Highs] Categories (2, object): [Lows < Highs]