gpt4 book ai didi

python对相似的分类值进行分组

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:50 24 4
gpt4 key购买 nike

我的数据集有一列包含大量唯一值(对象类型)。我相信有些是微不足道的(如果它们是备用的),因此我希望对低于某个定义阈值的级别进行分组。我使用标签编码器模块将列转换为分类值,然后我想合并计数小于指定阈值的那些类别。因此,对于我准备的这个样本集,如果“bin”列中某个类的总数(频率)等于或小于 2,它将在“o”的“new_bins”列下收到新值。因此,'new_bins' 中的 bin ('c','d') 将被更改为 'o'。

    id  |  bin | new_bins
======== =================
1 a a
2 a a
3 b b
4 c o
5 b b
6 a a
7 b b
8 a a
9 c o
10 a a
11 d o
12 d o

df.groupby(['bin'], sort=True).count())

这是我尝试过的一行代码,但它没有达到我想要的效果。我知道这有点模糊,因为我没有代码。我认为这个问题指的是垃圾箱,但也许它被称为其他东西,我似乎无法罚款类似的例子。在 Kaggle 比赛中,它被称为组合级别。也许仅仅说出我应该寻找的术语或短语也会有所帮助。

最佳答案

这会对您有所帮助:

In [127]: df
Out[127]:
id bin new_bins
0 1 a a
1 2 a a
2 3 b o
3 4 c o
4 5 b o
5 6 a a
6 7 b o
7 8 a a
8 9 c o
9 10 a a

对项目进行分组:

In [128]: dfg = df.groupby('bin').count()

In [129]: dfg
Out[129]:
id new_bins
bin
a 5 5
b 3 3
c 2 2

用于选择符合条件的项目

In [130]: dfg[dfg['id'] > 2]
Out[130]:
id new_bins
bin
a 5 5
b 3 3

In [143]: val = dfg[dfg['id'] <= 2]

In [144]: val
Out[144]:
id new_bins
bin
c 2 MODIFIED

更改满足条件的列的值

In [147]: df.loc[df['bin'] == val.index[0], 'new_bins'] = 'MOD'

In [148]: df
Out[148]:
id bin new_bins
0 1 a a
1 2 a a
2 3 b o
3 4 c MOD
4 5 b o
5 6 a a
6 7 b o
7 8 a a
8 9 c MOD
9 10 a a

关于python对相似的分类值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com