当前位置: 首页 > news >正文

11. Pandas 数据分类与区间分组(cut 与 qcut)

Pandas 数据分类与区间分组(cut 与 qcut)

在数据分析中,我们常常需要将连续型变量划分为若干区间,从而对数据进行离散化、分层统计或可视化展示。Pandas 提供了两种常用方法:cut(等宽分组)和 qcut(等频分组)。它们能帮助我们快速地将连续数值数据转化为类别变量,为后续的趋势分析、分层汇总和建模提供有力支持。


1. 等宽分组(cut)

cut 函数用于将连续数值划分为固定宽度的区间,即每个分组的区间长度相同。
这类方法适合数据分布相对均匀的情况,能直观地反映数值的分布范围。

import pandas as pddata = {"姓名": ["张三", "李四", "王五", "赵六", "孙七"],"年龄": [23, 34, 29, 40, 34]
}df = pd.DataFrame(data)
print(df)
   姓名  年龄
0  张三  23
1  李四  34
2  王五  29
3  赵六  40
4  孙七  34

1.1 基本使用

通过 bins 参数指定分组数量,即可让 Pandas 自动计算区间范围:

# 将年龄划分为3个等宽区间
df['年龄段'] = pd.cut(df['年龄'], bins=3)
print(df)
   姓名  年龄               年龄段
0  张三  23  (22.983, 28.667]
1  李四  34  (28.667, 34.333]
2  王五  29  (28.667, 34.333]
3  赵六  40    (34.333, 40.0]
4  孙七  34  (28.667, 34.333]

每个区间以“(a, b]”表示,其中 a 为左开、b 为右闭。

1.2 自定义区间与标签

我们也可以手动指定分组区间及其对应标签,使结果更具可读性:

bins = [20, 30, 35, 45]
labels = ['青年', '中年', '壮年']
df['年龄段'] = pd.cut(df['年龄'], bins=bins, labels=labels)
print(df)
   姓名  年龄 年龄段
0  张三  23  青年
1  李四  34  中年
2  王五  29  青年
3  赵六  40  壮年
4  孙七  34  中年

通过这种方式,我们可以自由定义区间边界与命名,更符合业务逻辑或统计需求。


2. 等频分组(qcut)

qcut 函数按**数据分位数(quantile)**划分区间,确保每个区间包含大致相同数量的数据。这在数据分布不均匀时尤其有用,能避免某些区间数据过少或过多的问题。

# 将年龄划分为3个等频组
df['年龄组_q'] = pd.qcut(df['年龄'], q=3)
print(df)
   姓名  年龄 年龄段             年龄组_q
0  张三  23  青年  (22.999, 30.667]
1  李四  34  中年    (30.667, 34.0]
2  王五  29  青年  (22.999, 30.667]
3  赵六  40  壮年      (34.0, 40.0]
4  孙七  34  中年    (30.667, 34.0]

可以看到,虽然区间长度不一致,但每组包含的数据数量大致相同,适合用于分布密度不均的数据。


3. 分组统计与应用场景

3.1 按区间统计

区间分组完成后,我们可以直接对其进行统计分析。例如统计各年龄段的人数:

# 按年龄段统计人数
age_counts = df['年龄段'].value_counts()
print(age_counts)
年龄段
青年    2
中年    2
壮年    1
Name: count, dtype: int64

3.2 应用场景

区间分组是数据分析中极为常见的操作,常用于:

  • 人群分层分析:如按年龄、收入或学历进行层级划分;
  • 业务指标统计:例如销售额、评分、访问时长的区间统计;
  • 可视化展示:在绘制柱状图、箱线图或密度图时,常需先进行区间划分以提升可读性。

4. 小结

在 Pandas 中:

  • cut 适用于等宽分组,按照固定区间长度划分;
  • qcut 适用于等频分组,按数据分布的分位数进行划分;
  • 两者均可搭配标签使用,实现连续数据的离散化与分层统计

掌握这两种方法,可以让我们在面对连续型变量时灵活地构建分组结构,为数据分析、建模和可视化提供更清晰的层次与洞察。

http://www.dtcms.com/a/450138.html

相关文章:

  • 找家里做的工作到什么网站淄博五厘网络技术有限公司
  • 国外哪些网站做产品推广比较好四川建设人员信息查询
  • 第二章:软件需求
  • AI Agent赋能产品经理:从需求分析到用户增长的全流程实践
  • 网站服务公司案例广州网站建设优化公司
  • AI学习日记——神经网络参数的更新
  • Java进阶教程,全面剖析Java多线程编程,多线程和堆内存栈内存的关系,笔记20
  • 建设春风摩托车官方网站百度站长论坛
  • 长春企业网站建设公司建设银行广州招聘网站
  • 网站 开发 周期定制app开发软件
  • 怎么做网站 ppt货代网站制作
  • 2025-10-06 Python不基础12——class原理
  • 龙泉驿建设局网站谷歌seo是什么职业
  • 从东方仙盟筑基期看 JavaScript 动态生成图片技术-东方仙盟
  • 怎么做电脑网站后台谷歌seo推广服务
  • 【笔记】2.1.1.1 电化学定义与组件特征
  • ISO 11452系列子标准介绍 道路车辆窄带辐射电磁能电干扰的部件试验方
  • 南宁网站制作工具山东建设厅执业资格注册中心网站
  • WebStorm对个人免费开放
  • 免费1级做爰片在线观看网站wordpress QQ登录注册
  • Git仓库Python文件Pylint静态分析
  • 青岛网站建设网站设计游乐网站设计
  • 盘锦网站开发推荐几个做网站比较好的公司
  • 10.6 作业
  • Dnsmasq 详细介绍与应用指南
  • MinIO 控制台功能减少使用mc操作
  • 【多线程-进阶】常⻅的锁策略
  • 通过类比理解TCP\IP五层协议
  • R脚本--PCA分析系列1_v1.0
  • 大模型面试题剖析:深入解析 Transformer 与 MoE 架构