当前位置: 首页 > 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.lryc.cn/news/601954.html

相关文章:

  • 蜣螂优化算法的华丽转身:基于Streamlit的MSIDBO算法可视化平台
  • 《频率之光:共振之战》
  • 商品中心—1.B端建品和C端缓存
  • unity3dTextMeshPro 设置中文字体,解决中文显示为框或中文字后面带背景颜色的问题
  • RK3568 Linux驱动学习——Linux驱动开发准备工作
  • VUE2 学习笔记9 生命周期
  • 数学建模——灰色关联分析
  • 打开postman后一直空白
  • 3D碰撞检测系统 基于SAT算法+Burst优化(Unity)
  • 量子力学的基本假设
  • Java生态下的AI开发利器:LangChain4j与Spring AI深度对比与实战
  • 【时时三省】(C语言基础)指针数组和多重指针
  • xhs小红书直播自动插件使用
  • 习题综合练习
  • 动态规划 (Dynamic Programming) 算法概念-JS示例
  • CentOS 9 配置国内 YUM 源
  • web刷题
  • 每日算法刷题Day55:7.27:leetcode 复习完第K小/大+栈4道题,用时1h50min
  • OpenCv中的 KNN 算法实现手写数字的识别
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipywidgets’问题
  • 《 集成异步任务与定时调度:线程池与任务中心设计》
  • 特殊成员函数的生成规则:Effective Modern C++条款17解析
  • ES6模块详解:核心语法与最佳实践
  • 蛋白质反向折叠模型-ProteinMPNN安装教程
  • 【通识】设计模式
  • 设计模式(七)结构型:适配器模式详解
  • KNN算法实现图片的识别
  • 《频率之光:群星之我》
  • LINUX727 磁盘管理回顾1;配置文件回顾
  • 黑马程序员C++核心编程笔记--类和对象--运算符重载