如何使用pandas一次性统计多个列中的数值出现频次
多列数值统一频次统计解决方案
你可以先将需要统计的多个列转换为单列Series,再调用value_counts()实现跨列的全局频次统计,具体实现如下:
方法1:筛选目标列后统计(推荐)
如果你只需要统计first/second/third/fourth/fifth/sixth/bonus这类指定列的数值频次,可先筛选目标列再做转换统计:
# 筛选需要统计的列,堆叠为单列后统计全局频次 total_freq = df[['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'bonus']].stack().value_counts() print(total_freq)
输出格式和单列value_counts()完全一致,会返回所有数值的跨列总出现次数:
1 136 4 121 9 118 ...
方法2:全列统计
如果需要统计整个DataFrame所有列的所有值频次,直接对全表做堆叠处理即可:
all_freq = df.stack().value_counts()
补充用法
如果你需要同时查看每个数值在不同列的单独出现频次,可使用melt展开后分组统计:
# 展开为[列名, 数值]结构,分组统计每个值在各列的出现次数 col_freq = df.melt(value_vars=['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'bonus']).groupby(['variable', 'value']).size()
内容的提问来源于stack exchange,提问作者user11594234
相关产品推荐
相关产品推荐

