如何从含17个类别的分类变量中筛选出Top10高频类别?
筛选频率最高的10个分类类别/城市
以下是基于Python Pandas的实现方案,分两种场景处理:
场景1:处理单个分类变量(如city列)
如果city是单个列,包含17个不同城市名称,直接统计频次并取前10即可:
import pandas as pd # 统计城市出现频次,按降序排列 city_frequency = df['city'].value_counts(ascending=False) # 获取频次最高的10个城市 top10_cities = city_frequency.head(10) # 提取城市名称列表(如果需要) top10_city_list = top10_cities.index.tolist()
场景2:处理编码为17个哑变量的分类变量
如果分类变量被拆分为17个哑变量列(每列0/1表示是否属于该类别),通过求和统计每个类别的样本数:
# 先筛选出所有哑变量列(根据实际列名调整筛选规则) dummy_columns = [col for col in df.columns if col.startswith('category_')] # 示例:前缀为category_的列 # 统计每个哑变量对应的类别频次,降序排序 category_frequency = df[dummy_columns].sum().sort_values(ascending=False) # 获取频次最高的10个类别 top10_categories = category_frequency.head(10) # 提取类别名称列表(如果需要) top10_category_list = top10_categories.index.tolist()
如果你的分类变量是单个列(包含17个唯一类别),直接复用场景1的value_counts方法即可。
内容的提问来源于stack exchange,提问作者Pawan Kumar
相关产品推荐
相关产品推荐

