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

20250620-Pandas.cut

pd.cut 是 Pandas 提供的一个非常实用的函数,用于将数值数据分割成离散的区间(bins)。它常用于数据分桶(binning)、分类或离散化操作。

参数说明

1. x: Any
  • 描述:输入数据,可以是 Pandas Series、列表或数组。
  • 示例
    import pandas as pd
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
2. bins: Any
  • 描述:定义分割点的边界。长度必须比 labels 长 1,可以是以下几种类型:
    • 整数:指定分割的区间数,pd.cut 会自动计算等宽的区间。
    • 序列:指定具体的分割点,例如 [0, 5, 10, 15],表示分割区间为 (0, 5](5, 10](10, 15]
  • 示例
    bins = 3  # 自动分割为3个等宽区间
    bins = [0, 5, 10, 15]  # 自定义分割点
    
3. right: bool = True
  • 描述:是否包含右侧边界。
    • 如果为 True,则区间为 (a, b]
    • 如果为 False,则区间为 [a, b)
  • 示例
    pd.cut(x, bins=3, right=True)  # 默认为 (a, b]
    pd.cut(x, bins=3, right=False)  # 区间为 [a, b)
    
4. labels: Any = None
  • 描述:为每个区间指定标签。如果为 None,则默认使用区间字符串作为标签。
  • 示例
    labels = ['低', '中', '高']
    pd.cut(x, bins=3, labels=labels)
    
5. retbins: bool = False
  • 描述:是否返回分割点。
    • 如果为 True,则返回一个元组 (binned_data, bins)
    • 如果为 False,则只返回分桶后的数据。
  • 示例
    result, bins = pd.cut(x, bins=3, retbins=True)
    
6. precision: int = 3
  • 描述:控制分割点的精度(小数点后保留的位数)。
  • 示例
    pd.cut(x, bins=3, precision=2)  # 分割点保留两位小数
    
7. include_lowest: bool = False
  • 描述:是否包含最低值(第一个区间的左边界)。
    • 如果为 True,则第一个区间为 [a, b)
    • 如果为 False,则第一个区间为 (a, b)
  • 示例
    pd.cut(x, bins=3, include_lowest=True)  # 第一个区间包含最低值
    
8. duplicates: str = "raise"
  • 描述:处理重复分割点的方式。
    • "raise":如果发现重复的分割点,抛出 ValueError
    • "drop":忽略重复的分割点。
  • 示例
    pd.cut(x, bins=[0, 5, 5, 10], duplicates='drop')  # 忽略重复的5
    
9. ordered: bool = True
  • 描述:是否将结果作为有序分类(Categorical)返回。
    • 如果为 True,则返回有序分类。此时 labels 中的数据必须唯一
    • 如果为 False,则返回无序分类。此时 labels 中的数据可重复
  • 示例
    pd.cut(x, bins=3, ordered=True)  # 默认为有序分类
    

返回值

  • 返回类型:Pandas Categorical 类型(分类数据)。
  • 内容:每个数据点对应的区间标签。

使用示例

示例 1:自动分割区间
import pandas as pdx = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = pd.cut(x, bins=3)
print(result)

输出:

[(0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (4.0, 7.0], (4.0, 7.0], (4.0, 7.0], (7.0, 10.0], (7.0, 10.0], (7.0, 10.0]]
Categories (3, interval[float64]): [(0.994, 4.0] < (4.0, 7.0] < (7.0, 10.0]]
示例 2:自定义分割点
result = pd.cut(x, bins=[0, 5, 10, 15])
print(result)

输出:

[(0, 5], (0, 5], (0, 5], (0, 5], (0, 5], (5, 10], (5, 10], (5, 10], (5, 10], (5, 10]]
Categories (3, interval[int64]): [(0, 5] < (5, 10] < (10, 15]]
示例 3:自定义标签
result = pd.cut(x, bins=[0, 5, 10, 15], labels=['低', '中', '高'])
print(result)

输出:

[低, 低, 低, 低, 低, 中, 中, 中, 中, 中]
Categories (3, object): [低 < 中 < 高]
示例 4:返回分割点
result, bins = pd.cut(x, bins=3, retbins=True)
print(result)
print(bins)

输出:

[(0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (0.994, 4.0], (4.0, 7.0], (4.0, 7.0], (4.0, 7.0], (7.0, 10.0], (7.0, 10.0], (7.0, 10.0]]
Categories (3, interval[float64]): [(0.994, 4.0] < (4.0, 7.0] < (7.0, 10.0]]
[0.994 4.     7.     10.   ]
http://www.lqws.cn/news/452395.html

相关文章:

  • aws(学习笔记第四十五课) route53-failover
  • 文件夹美化工具推荐,打造个性化电脑界面
  • 【网工】华为配置专题进阶篇④
  • 学习华为 ensp 的学习心得体会
  • 10分钟撸出高性能网络服务:吃透高性能优化:缓存_锁_系统调用_编译
  • 汽车整车厂如何用数字孪生系统打造“透明车间”
  • 【React】React CSS 样式设置全攻略
  • DAY 37 早停策略和模型权重的保存
  • RPGMZ游戏引擎 如何手动控制文字显示速度
  • 机器翻译与跨语言学习数据集综述
  • 情感大模型
  • “地标界爱马仕”再拓疆域:世酒中菜联袂赤水金钗石斛定义中国GI
  • vue3 reactive重新赋值
  • QEMU学习之路(10)— RISCV64 virt 使用Ubuntu启动
  • Linux故障排查与性能优化实战经验
  • AI浪潮下的自媒体革命:智能体崛起与人类价值的重构
  • Qi无线充电:车载充电的便捷与安全之选
  • servlet前后端交互
  • C++设计模式
  • 在VTK中捕捉体绘制图像并实时图像处理
  • uniapp开发小程序,导出文件打开并保存,实现过程downloadFile下载,openDocument打开
  • 【Python】Excel表格操作:ISBN转条形码
  • React Native【实战范例】弹跳动画菜单导航
  • 学习threejs,三维汽车模拟器,场景有树、云、山等
  • Nginx-Ingress-Controller自定义端口实现TCP/UDP转发
  • 大数据系统架构实践(一):Zookeeper集群部署
  • 局域网投屏工具(将任何设备转换为计算机的辅助屏幕)Deskreen
  • LVS负载均衡群集:Nginx+Tomcat负载均衡群集
  • Lora训练
  • 项目管理利器:甘特图的全面解析与应用指南