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 re正则表达式模块(Regular Expression)
Jul 16 Python
从零开始学Python第八周:详解网络编程基础(socket)
Dec 14 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
python交换两个变量的值方法
Jan 12 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
Tensorflow累加的实现案例
Feb 05 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
python3实现简单飞机大战
Nov 29 Python
Python循环之while无限迭代
Apr 30 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 文件类型判断代码
2009/03/13 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
python如何安装下载后的模块
2020/07/03 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
python函数超时自动退出的实操方法
2020/12/28 Python
Linux Interview Questions For software testers
2012/06/02 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
合伙经营协议书范本
2014/04/18 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
小学美术教学反思
2016/02/17 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
python字符串常规操作大全
2021/05/02 Python
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers