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入门篇之函数
Oct 20 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
python比较2个xml内容的方法
May 11 Python
python网络编程之文件下载实例分析
May 20 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
Python编程实现正则删除命令功能
Aug 30 Python
tensorflow识别自己手写数字
Mar 14 Python
Python简单生成随机数的方法示例
Mar 31 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
Django项目中使用JWT的实现代码
Nov 04 Python
利用Python计算KS的实例详解
Mar 03 Python
Python3操作YAML文件格式方法解析
Apr 10 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
详解实现vue的数据响应式原理
2021/01/20 Vue.js
python中的装饰器详解
2015/04/13 Python
Python中防止sql注入的方法详解
2017/02/25 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Python字典遍历操作实例小结
2019/03/05 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
python字符串下标与切片及使用方法
2020/02/13 Python
python构造IP报文实例
2020/05/05 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
机电一体化大学生求职信
2013/11/08 职场文书
七年级英语教学反思
2014/01/15 职场文书
珍珠鸟教学反思
2014/02/01 职场文书
设计专业自荐信
2014/06/19 职场文书
法人委托书
2014/07/31 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js