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实现的udp协议Server和Client代码实例
Jun 04 Python
python实现统计代码行数的方法
May 22 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
Python爬取网页信息的示例
Sep 24 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
python中@contextmanager实例用法
Feb 07 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
进行数据处理的6个 Python 代码块分享
Apr 06 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中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
员工自我鉴定范文
2013/10/06 职场文书
初二学生评语大全
2014/12/26 职场文书
文艺演出主持词
2015/07/01 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android