pandas 交叉表统计

559 字
3 分钟
pandas 交叉表统计

pandas 交叉表统计#

交叉表适合回答两个分类变量之间的分布问题。例如不同城市的用户等级、不同模型的预测结果、不同渠道的转化状态。

它比单列 value_counts 更进一步,能看到组合关系。

基础交叉表#

table = pd.crosstab(df["city"], df["level"])
print(table)

行是城市,列是等级,单元格是数量。这个结果很适合快速看分布是否偏斜。

加比例#

row_ratio = pd.crosstab(df["city"], df["level"], normalize="index")
print((row_ratio * 100).round(2))

normalize="index" 表示每一行内部算比例,适合比较不同城市内的等级结构。

加合计#

table = pd.crosstab(
df["city"],
df["level"],
margins=True,
margins_name="total",
)

使用前清洗类别#

交叉表对类别值非常敏感。空格、大小写、缺失值都会让结果多出奇怪的行列。统计前最好先做字符串清洗,并决定缺失值是否单独作为一类。

实战复盘#

写《pandas 交叉表统计》这类数据分析文章时,我会强制保留“检查点”。因为数据分析里最危险的不是报错,而是代码顺利跑完却得到错误结论。

一个合格的 pandas 步骤,至少要能回答:输入多少行、输出多少行、哪些字段被修改、失败值有多少、是否有样本可以人工复核。缺少这些信息,代码就很难进入正式流程。

如果以后把这些文章串成系列,可以按读取、检查、清洗、变换、统计、导出排列。这样读者能从原始数据一路走到可交付结果。

最小验收样例#

验收《pandas 交叉表统计》时,我会手写一个三到五行的小 DataFrame:一行正常数据,一行缺失或异常数据,一行边界数据。先让示例在小表上跑通,再换成完整数据集。

小表的好处是结果可以人工计算。只要人工结果和 pandas 输出对不上,就说明代码逻辑或字段口径还没想清楚。这个过程比直接在大表上调试更可靠。

小结#

crosstab 是观察分类变量关系的快速工具。数量和比例一起看,才能避免被样本规模误导。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

pandas 交叉表统计
https://blog.tjcheng.cn/posts/backfill/2026-05-26/pandas-crosstab-note/
作者
TengJinCheng
发布于
2026-05-26
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录