Pandas 中使用交叉表为分类列生成计数型宽表结构
本文介绍如何利用 pd.crosstab 将长格式的分类评分数据如 high/medium/low高效转换为按分组如店铺展开的宽表自动生成对应类别的计数列并控制类别顺序与轴标签。 本文介绍如何利用 pd.crosstab 将长格式的分类评分数据如 high/medium/low高效转换为按分组如店铺展开的宽表自动生成对应类别的计数列并控制类别顺序与轴标签。在数据分析中常需将“长格式”long format的分组-类别记录例如每条记录代表某店铺的一次顾客评分聚合为“宽格式”wide format的汇总表——即每个唯一分组如 Shop作为一行每个预定义类别如 High、Medium、Low作为一列单元格值为该店铺获得该评分的总次数。这种结构更便于后续统计、可视化或建模。pandas 提供了专为此类任务设计的高效函数pd.crosstab。它本质是二维频数表生成器支持索引行分组、列变量类别维度及可选的值聚合逻辑。为确保输出列严格按指定顺序如 High → Medium → Low推荐先将目标列转为有序分类类型pd.Categorical再传入 crosstabimport pandas as pd# 原始数据长格式含重复店铺IDdata [[store1, High], [store1, Medium], [store2, Low], [store2, Low]]df pd.DataFrame(data, columns[Shop, Review])# 步骤1将 Review 列设为有序分类明确指定类别顺序df[Review] pd.Categorical(df[Review], categories[High, Medium, Low])# 步骤2生成交叉表行Shop列Reviewresult pd.crosstab(df[Shop], df[Review])print(result)输出Review High Medium LowShop store1 1 1 0store2 0 0 2默认情况下crosstab 会为行索引和列名添加轴标签如 Shop 和 Review。若需更简洁的表格结构例如直接用于导出或合并可链式调用 rename_axis 清除这些标签 知网AI智能写作 知网AI智能写作写文档、写报告如此简单