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的即时标记项目练习笔记
Sep 18 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
flask框架视图函数用法示例
Jul 19 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
pandas计算最大连续间隔的方法
Jul 04 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
Python设计密码强度校验程序
Jul 30 Python
python生成xml时规定dtd实例方法
Sep 21 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
解决Django连接db遇到的问题
2019/08/29 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
销售主管岗位职责范本
2014/02/14 职场文书
岗位聘任书范文
2014/03/29 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
公司股东出资证明书
2014/11/01 职场文书
运动员加油词
2015/07/18 职场文书
财务人员入职担保书
2015/09/22 职场文书
PHP正则表达式之RCEService回溯
2022/04/11 PHP