如何根据变量在一列中出现的次数来分组?

问题描述 投票:0回答:1

我试图用Python运行一个回归,使用一些分类变量。所以我想把它们转换为假人。然而,我在这里遇到了一个问题。我正在处理的列有几个经常重复的类别,而其他类别则没有。如果我应用假人转换,我将得到大约5000个假人。所以我想把只出现几次的类别进行分组。我如何才能做到这一点呢?例如,如果你的类别1出现2000次,类别2出现3000次,但类别4、5、6各出现30次,类别7出现10次,类别8出现5次。如何对类别4、5、6、7、8进行分组?具体做法是:如果类别出现的次数少于X次,就对它们进行分组。结果应该是第1组,第2组,group_x,group_x应该有出现少于特定次数的变量。

python pandas grouping data-conversion
1个回答
1
投票

想象一下,df中包含了你的分类变量列。

import pandas as pd
df = pd.DataFrame({ 'x':['a','b','c','a','b','a','d','e','f']})

你可以简单地计算里面的值。

cnt = df.x.value_counts()

并创建额外的列,说明给定的行属于哪个组:注意所有低计数的分类值将在同一组。

df['group'] = df['x'].apply( lambda x: cnt[x] if cnt[x] >= 2 else 0  )

你可以将2的值修改为任何阈值,低于这个阈值,所有的类别将属于同一组。最后创建像这样的假人变量。

dummies = pd.get_dummies(df['group'])

假设你想让相同的类别(尤其是低计数类别)进入相同的假人。

© www.soinside.com 2019 - 2024. All rights reserved.