首页 > 解决方案 > 将有限的记录和其余的记录分组为其他

问题描述

有什么方法可以对数据进行分组,例如

df.Feature.value_counts(normalize=True)

但不要给整个记录,只给我前 5 个记录组,其余记录组为“其他”

例如,这是我在运行上面的代码时得到的输出

NUEVO LEON          9.566025
ESTADO DE MEXICO    8.979984
TAMAULIPAS          7.939926
VERACRUZ            7.686035
DISTRITO FEDERAL    7.257108
COAHUILA            5.283328
JALISCO             4.835284
BAJA CALIFORNIA     4.280905
MICHOACAN           4.160830
GUANAJUATO          4.129765

这是我正在寻找的输出


NUEVO LEON          9.566025
ESTADO DE MEXICO    8.979984
TAMAULIPAS          7.939926
VERACRUZ            7.686035
DISTRITO FEDERAL    7.257108
OTHERS              24.56156

标签: pythonpandasgrouping

解决方案


我只是在之后执行此操作,value_counts因为结果将按降序排序。给定 Seriess的结果df.Feature.value_counts(normalize=True),您可以保留前 5 个,然后将其他所有内容相加。

import pandas as pd

N = 5
pd.concat([s.iloc[:N], pd.Series(s.iloc[N:].sum(), index=['OTHERS'])])
#NUEVO LEON           9.566025
#ESTADO DE MEXICO     8.979984
#TAMAULIPAS           7.939926
#VERACRUZ             7.686035
#DISTRITO FEDERAL     7.257108
#OTHERS              22.690112
#dtype: float64

推荐阅读