0

0

Pandas实现双列联合分箱计数的简洁方法

聖光之護

聖光之護

发布时间:2025-12-29 18:06:28

|

720人浏览过

|

来源于php中文网

原创

Pandas实现双列联合分箱计数的简洁方法

使用 `pd.cut` 对两列分别分箱,再通过 `pd.crosstab` 一键生成交叉频数表,可替代冗长的手动布尔索引计数逻辑,代码从数十行压缩为2行,兼具可读性与可维护性。

在数据分析中,常需根据多个数值列的组合条件对样本进行分类统计(例如:按 Age1 的区间 × Age2 的区间 统计频数)。原始方法依赖嵌套布尔索引和重复调用 len(),不仅代码冗长、易出错(如边界不一致、漏写括号),而且难以扩展或复用。

推荐采用 向量化分箱 + 交叉制表 的标准范式:

import pandas as pd
import numpy as np

data = pd.DataFrame({
    'Age1': [45, 48, 52, 51, 48, 45, 62, 47, 65, 50], 
    'Age2': [37, 68, 71, 54, 67, 59, 95, 56, 41, 42]
})

# 定义统一区间:(-∞, 40], (40, 50], (50, 60], (60, ∞)
bins = [-np.inf, 40, 50, 60, np.inf]

# 一步生成二维频数表
result = pd.crosstab(
    pd.cut(data['Age1'], bins=bins, right=True),   # Age1 分箱(右闭区间)
    pd.cut(data['Age2'], bins=bins, right=True)    # Age2 分箱(右闭区间)
)

print(result)

输出结果为清晰的交叉频数矩阵:

Age2          (-inf, 40.0]  (40.0, 50.0]  (50.0, 60.0]  (60.0, inf]
Age1                                                               
(40.0, 50.0]             1             1             2            2
(50.0, 60.0]             0             0             1            1
(60.0, inf]              0             1             0            1

优势说明

Z Code
Z Code

智谱AI推出的轻量级AI代码编辑器

下载
  • pd.cut 自动处理边界逻辑(right=True 表示右闭,默认行为),避免手动写 >=/
  • pd.crosstab 天然支持分类型索引,结果直接可读、可导出、可可视化;
  • 若需自定义行列标签(如 "40-50" 替代 (40.0, 50.0]),可在 pd.cut 中添加 labels 参数;
  • 支持进一步聚合,如 .apply(lambda x: x / x.sum(), axis=1) 计算行百分比。

⚠️ 注意事项

  • 确保 bins 在两列中完全一致,以保证语义对齐;
  • 若数据含缺失值(NaN),pd.cut 默认将其归为 NaN 类别,crosstab 会自动忽略(如需保留,设置 dropna=False);
  • 如需严格匹配原题中的分类名称(60),可后续用 result.rename_axis 和 result.rename 重命名索引。

该方法是 Pandas 生态中处理“双维度区间计数”问题的标准、高效且可扩展的解决方案。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

49

2025.12.04

lambda表达式
lambda表达式

Lambda表达式是一种匿名函数的简洁表示方式,它可以在需要函数作为参数的地方使用,并提供了一种更简洁、更灵活的编码方式,其语法为“lambda 参数列表: 表达式”,参数列表是函数的参数,可以包含一个或多个参数,用逗号分隔,表达式是函数的执行体,用于定义函数的具体操作。本专题为大家提供lambda表达式相关的文章、下载、课程内容,供大家免费下载体验。

202

2023.09.15

python lambda函数
python lambda函数

本专题整合了python lambda函数用法详解,阅读专题下面的文章了解更多详细内容。

187

2025.11.08

lambda表达式
lambda表达式

Lambda表达式是一种匿名函数的简洁表示方式,它可以在需要函数作为参数的地方使用,并提供了一种更简洁、更灵活的编码方式,其语法为“lambda 参数列表: 表达式”,参数列表是函数的参数,可以包含一个或多个参数,用逗号分隔,表达式是函数的执行体,用于定义函数的具体操作。本专题为大家提供lambda表达式相关的文章、下载、课程内容,供大家免费下载体验。

202

2023.09.15

python lambda函数
python lambda函数

本专题整合了python lambda函数用法详解,阅读专题下面的文章了解更多详细内容。

187

2025.11.08

数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

449

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

262

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

718

2023.10.16

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 38.9万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号