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

Python Pandas.cut函数解析与实战教程

Python Pandas.cut 函数解析与实战教程

摘要

pandas.cut 是数据分析工具库 Pandas 中一个极其强大且常用的函数。它的核心功能是将连续的数值型数据根据指定的间断点(bins)进行分割,转换成离散化的区间类别(categorical data)。这种操作在数据预处理、特征工程和数据可视化中至关重要,例如,将用户的年龄分段、将考试分数评级、或将销售额划分为不同的等级。本文章将从基础用法到高级技巧,全面、深入地剖析 pandas.cut 函数,帮助你在数据分析项目中游刃有余。


1. 函数核心功能与参数详解

首先,我们来看一下 pandas.cut 函数的官方签名,并逐一解析其参数。

pandas.cut(x,bins,right: bool = True,labels=None,retbins: bool = False,precision: int = 3,include_lowest: bool = False,duplicates: str = 'raise',ordered: bool = True
)
1.1 x

类型: 一维数组(array-like),如 pandas.Series, numpy.ndarray, 或 Python 列表。
说明: 这是需要进行分箱操作的输入数据。cut 函数会逐一判断 x 中的每个元素应归属哪个区间。

1.2 bins

类型: int, scalar sequence (如 list 或 numpy array), 或 pandas.IntervalIndex
说明: 这是 cut 函数最核心的参数,它定义了分箱的规则。

  • 整数: 如果 bins 是一个整数,cut 会在 x 的最小值和最大值之间生成等宽的区间。例如,bins=5 会将数据分成5个宽度相等的桶。

    import pandas as pd
    import numpy as np
    data = pd.Series(np.random.randn(20) * 100)
    # 将数据分为10个等宽的区间
    categories = pd.cut(data, 10)
    print(categories.value_counts())
    
  • 标量序列: 这是最常用的方式,通过一个列表或数组来手动指定区间的边界。例如,bins=[0, 18, 40, 60, 100] 会生成以下几个区间:(0, 18], (18, 40], (40, 60], (60, 100]

    ages = pd.Series([1, 15, 25, 35, 45, 55, 65, 99])
    age_bins = [0, 18, 35, 60, 100]
    # 根据自定义边界进行分箱
    age_categories = pd.cut(ages, bins=age_bins)
    print(age_categories)
    # 输出:
    # 0      (0, 18]
    # 1      (0, 18]
    # 2     (18, 35]
    # 3     (35, 60]
    # 4     (35, 60]
    # 5     (35, 60]
    # 6    (60, 100]
    # 7    (60, 100]
    # dtype: category
    
1.3 right

类型: bool, 默认 True
说明: 这个参数决定了区间的闭合方式。

  • right=True (默认): 区间为左开右闭 (a, b]。这意味着值 a 不属于该区间,但值 b 属于。

  • right=False: 区间为左闭右开 [a, b)。这意味着值 a 属于该区间,但值 b 不属于。

    data = pd.Series(
http://www.dtcms.com/a/300570.html

相关文章:

  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • 「mysql」Mac osx彻底删除mysql
  • 21.OSPF路由协议·多区域
  • 通过v4l2,采集视频,FFmpeg编码压缩封装视频(三)
  • 【模电笔记】—— 波形发生电路(波形振荡器)
  • Keil MDK 嵌入式开发问题:Error: L6218E: Undefined symbol HAL_TIM_PWM_ConfigChannel
  • C++编程入门:从基础到复合类型
  • 逆向入门(43)程序逆向篇-tsrh-crackme
  • SpringBoot 整合 Langchain4j AIService 深度使用详解
  • maven命令详解
  • 栈----5.柱状图中最大的矩形
  • 多模态视觉语言模型FILA-细粒度分辨率融合策略
  • 前缀和-560.和为k的子数组-力扣(LeetCode)
  • 望言OCR视频字幕提取2025终极评测:免费版VS专业版提全方位对比(含免费下载)
  • 3D芯片香港集成:技术突破与产业机遇全景分析
  • sealos 方式安装k8s5节点集群
  • CentOS 9 配置国内 YUM 源
  • Flutter开发实战之CI/CD与发布流程
  • Java AI面试实战:Spring AI与RAG技术落地
  • MySQL - 主从复制与读写分离
  • VILA系列论文解读
  • 预处理详解
  • rust-模块树中引用项的路径
  • PostgreSQL并发控制
  • Android:Reverse 实战 part 2 番外 IDA python
  • Android MQTT 长连接最佳实践技术分享
  • 力扣-76.最小覆盖子串
  • 安卓怎么做一个像QQ一样的开关切换控件
  • Kotlin位运算
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现