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),再传入 crosstab:import 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,列=Review)result = 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智能写作,写文档、写报告如此简单

相关推荐
幻想时空27 分钟前
地图数据采集
python
梦想不只是梦与想27 分钟前
Python 中的类型判断方法
python·type·isinstance
alphaTao1 小时前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
Kevin Wang7271 小时前
Nvidia-AGX-spark部署手册——课堂质量诊断(jetpack:r36)
python·docker·容器
每天都要进步哦2 小时前
SQL单行函数详解:字符、数字、日期、转换与通用函数全解析
数据库·mysql
不剪发的Tony老师2 小时前
VeloxDB:一款免费开源的轻量级数据库管理工具
数据库·sql
dotnet902 小时前
批量生成所有表的修改脚本
数据库·sql·oracle
@Mike@2 小时前
06-数据库学习笔记(存储模型与数据压缩)
数据库·笔记·学习
Python私教2 小时前
Django 6.1 RC1 实测:FETCH_PEERS 两条 SQL 解决 N+1,select_related 还需要吗?
后端·python·django
玉鸯3 小时前
Agent 的任务编排:从 System Prompt 到 Hierarchical Multi-Agent
python·llm·agent