Pandas 中使用交叉表为分类列生成计数汇总列

张开发
2026/6/7 18:02:10 15 分钟阅读
Pandas 中使用交叉表为分类列生成计数汇总列
本文介绍如何利用 pd.crosstab 将分类变量如顾客评分按分组如门店展开为多个计数列高效实现“一店一行、三评计数”的宽表转换并控制列序与轴标签。 本文介绍如何利用 pd.crosstab 将分类变量如顾客评分按分组如门店展开为多个计数列高效实现“一店一行、三评计数”的宽表转换并控制列序与轴标签。在数据分析中常需将长格式的分类计数数据如每条记录代表一次门店评分聚合为宽格式汇总表如每行代表一家门店各列分别显示 High / Medium / Low 的出现次数。Pandas 提供了简洁高效的解决方案——pd.crosstab它专为构建二维频数交叉表而设计。以下是一个典型场景原始 DataFrame 包含两列 Shop 和 Review其中 Review 取值为 High、Medium 或 Low但同一店铺可能有多条评分记录。目标是生成新 DataFrame每行唯一对应一个店铺并新增三列分别统计该店各评分等级的数量。首先构造示例数据import pandas as pddata [[store1, High], [store1, Medium], [store2, Low], [store2, Low]]df pd.DataFrame(data, columns[Shop, Review])为确保输出列严格按 High → Medium → Low 顺序排列而非默认字母序推荐先将 Review 列转为有序分类类型Categoricaldf[Review] pd.Categorical(df[Review], categories[High, Medium, Low])接着调用 pd.crosstab 进行交叉计数result pd.crosstab(df[Shop], df[Review])print(result)输出为 Zeemo AI 一款专业的视频字幕制作和视频处理工具

更多文章