python中pd.cut()与pd.qcut()的对比及示例


Posted in Python onJune 16, 2022

1、pd.cut()

用于将数据值按照值本身进行分段并排序到 bins 中。
参数包含:x, bins, right, include_lowest, labels, retbins, precision

x :被划分的数组
bins :被划分的区间/区间数

  • - ① 当 bins 为整数时,表示数组 x 被划分为多少个等间距的区间;
  • - ② 当 bins 为序列时,表示数组 x 将被划分在该指定序列中,若不在则输出 NaN;
# x = [1,2,3,5,3,4,1],  bins = 3
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3)  
[Out] [(0.996, 2.333], (0.996, 2.333], (2.333, 3.667], (3.667, 5.0], (2.333, 3.667], (3.667, 5.0], (0.996, 2.333]]
      Categories (3, interval[float64]): [(0.996, 2.333] < (2.333, 3.667] < (3.667, 5.0]]

# x = [1,2,3,5,3,4,1],  bins = [1,2,3]
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3])
[Out] [NaN, (1.0, 2.0], (2.0, 3.0], NaN, (2.0, 3.0], NaN, NaN]
      Categories (2, interval[int64]): [(1, 2] < (2, 3]]

right :是否包含右端点,默认为 True;
include_lowest :是否包含左端点,默认为 False;

# x = [1,2,3,5,3,4,1],  bins = [1,2,3], 默认不包含左端点 1,默认包含右端点 3
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3])
[Out] [NaN, (1.0, 2.0], (2.0, 3.0], NaN, (2.0, 3.0], NaN, NaN]
      Categories (2, interval[int64]): [(1, 2] < (2, 3]]

# x = [1,2,3,5,3,4,1],  bins = [1,2,3], 设置包含左端点 1,设置包含右端点 3
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3],include_lowest=True,right=False)
[Out] [[1.0, 2.0), [2.0, 3.0), NaN, NaN, NaN, NaN, [1.0, 2.0)]
      Categories (2, interval[int64]): [[1, 2) < [2, 3)]

labels :是否用标记来替代返回的 bins,默认为 False,如需标记,标记数需与 bins 数一致,并为 labels 赋值一组列表;

# x = [1,2,3,5,3,4,1],  bins = 3, 设置用指定标签 ['A','B','C'] 返回序列
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,labels=['A','B','C'])
[Out] [A, A, B, C, B, C, A]
      Categories (3, object): [A < B < C]

retbins : 是否返回间距 bins,默认为 False,仅返回 x 中每个值对应的 bin 的列表,若 retbins = True,则返回 bin 的列表及对应的 bins。

# x = [1,2,3,5,3,4,1],  bins = 3, 设置一并返回对应 bins 序列
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,retbins=True)
[Out] ([(0.996, 2.333], (0.996, 2.333], (2.333, 3.667], (3.667, 5.0], (2.333, 3.667], (3.667, 5.0], (0.996, 2.333]]
      Categories (3, interval[float64]): [(0.996, 2.333] < (2.333, 3.667] < (3.667, 5.0]],
      array([0.996     , 2.33333333, 3.66666667, 5.        ]))

precision : 精度,区间边界值保留的小数点位数

# x = [1,2,3,5,3,4,1],  bins = 3, 精度为2
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,precision=2)
[Out] [(1.0, 2.33], (1.0, 2.33], (2.33, 3.67], (3.67, 5.0], (2.33, 3.67], (3.67, 5.0], (1.0, 2.33]]
      Categories (3, interval[float64]): [(1.0, 2.33] < (2.33, 3.67] < (3.67, 5.0]]

2、pd.qcut()

基于分位数的离散化功能。 根据等级或基于样本分位数(或者说基于样本值落在区间的频率),将变量分离为相等大小的桶。

参数包含:x, q, labels, retbins, precision, duplicates

  • x、labels、retbins、precision 与 pd.cut() 中参数用法一致;
  • q : 将序列 x 划分为 q 个区间,使落在每个区间的值的数量一致;
  • duplicates :重复值处理,默认为 duplicates = ‘raise’,表示不忽略重复值。如需忽略 x 中的重复值,可指定 duplicates = ‘drop’。

3、pd.cut() v.s. pd.qcut()

  • pd.cut() 将指定序列 x,按指定数量等间距的划分(根据值本身而不是这些值的频率选择均匀分布的bins),或按照指定间距划分
  • pd.qcut() 将指定序列 x,划分为 q 个区间,使落在每个区间的记录数一致
[In] ll = [1,2,3,5,3,4,1,2]
     print('- - - pd.cut()示例1 - - -')
     print(pd.cut(ll, 4, precision=2).value_counts())
     print('- - - pd.cut()示例2 - - -')
     print(pd.cut(ll, [1,2,4], precision=2).value_counts())
     print('- - - pd.qcut()示例 - - -')
     print(pd.qcut(ll, 4, precision=2).value_counts())

[Out] - - - pd.cut()示例1 - - -
     (1.0, 2.0]    4
     (2.0, 3.0]    2
     (3.0, 4.0]    1
     (4.0, 5.0]    1
     dtype: int64
     - - - pd.cut()示例2 - - -
     (1, 2]    2
     (2, 4]    3
     dtype: int64
     - - - pd.qcut()示例 - - -
     (0.99, 1.75]    2
     (1.75, 2.5]     2
     (2.5, 3.25]     2
     (3.25, 5.0]     2
     dtype: int64

到此这篇关于python中pd.cut()与pd.qcut()的对比及示例的文章就介绍到这了,更多相关python pd.cut()与pd.qcut()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python八大排序算法速度实例对比
Dec 06 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
python绘制多个子图的实例
Jul 07 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
Python字符串的15个基本操作(小结)
Feb 03 Python
Python 用户输入和while循环的操作
May 23 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 #Python
python内置模块之上下文管理contextlib
Jun 14 #Python
Python时间操作之pytz模块使用详解
Django框架之路由用法
Jun 10 #Python
深入理解pytorch库的dockerfile
Jun 10 #Python
如何利用python实现列表嵌套字典取值
Jun 10 #Python
python中filter,map,reduce的作用
Jun 10 #Python
You might like
PHP面向对象编程快速入门
2006/10/09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
理解javascript封装
2016/02/23 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python中Genarator函数用法分析
2015/04/08 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python输入错误后删除的方法
2019/10/12 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
一套Java笔试题
2016/08/20 面试题
师范生求职信
2014/06/14 职场文书
个人整改方案范文
2014/10/25 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python