有没有办法像这样对数据进行分组
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
请您参考如下方法:
我只是在 value_counts 之后执行此操作,因为结果将降序排列。给定系列 s,即 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
