本文介绍如何利用 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' 列转为有序分类类型(Categorical):df['Review'] = pd.Categorical(df['Review'], categories=['High', 'Medium', 'Low'])接着调用 pd.crosstab 进行交叉计数:result = pd.crosstab(df['Shop'], df['Review'])print(result)输出为: Zeemo AI 一款专业的视频字幕制作和视频处理工具
相关推荐
Cyber4K3 分钟前
【Python专项】Nginx访问日志分析时间范围处理示例PaperData10 分钟前
1988-2025年《中国人口和就业统计年鉴》全年份excel+PDF周末也要写八哥16 分钟前
代码中的注释的重要性(二)愿^O^~17 分钟前
JVM GC 入门 → 进阶XingshiXu30 分钟前
【NWAFU×KUL】不打扰,也能看懂一头牛:非接触式技术正在改变精准畜牧kybs199130 分钟前
springboot租车系统--附源码68701星河耀银海44 分钟前
C语言与数据库交互:SQLite实战与数据持久化过期动态1 小时前
MySQL中的约束wxin_VXbishe1 小时前
springboot新能源车充电站管理系统小程序-计算机毕业设计源码29213程序员陆通1 小时前
月烧 400 刀到不到 20 刀:我是怎么把 OpenClaw 的 Token 账单砍掉 95% 的