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实现通过文件路径获取文件hash值的方法
Apr 29 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
python 实现屏幕录制示例
Dec 23 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
python实现俄罗斯方块小游戏
Apr 24 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
python 自动化偷懒的四个实用操作
Apr 11 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
需要发散思维学习PHP
2009/06/29 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
javascript中this指向详解
2016/04/23 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
js实现拖拽功能
2017/03/01 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
python显示天气预报
2014/03/02 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
python实现两个文件合并功能
2018/04/01 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
abstract class和interface有什么区别?
2012/01/03 面试题
J2EE包括哪些技术
2016/11/25 面试题
电大毕业生自我鉴定
2013/11/10 职场文书
七匹狼男装广告词
2014/03/21 职场文书
母校寄语大全
2014/04/10 职场文书
合作协议书格式
2014/08/19 职场文书
2014年保育员工作总结
2014/12/02 职场文书
教师远程研修感悟
2015/11/18 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
Python机器学习三大件之一numpy
2021/05/10 Python
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
MYSQL常用函数介绍
2022/05/05 MySQL