使用pandas实现连续数据的离散化处理方式(分箱操作)


Posted in Python onNovember 22, 2019

Python实现连续数据的离散化处理主要基于两个函数,pandas.cut和pandas.qcut,前者根据指定分界点对连续数据进行分箱处理,后者则可以根据指定箱子的数量对连续数据进行等宽分箱处理,所谓等宽指的是每个箱子中的数据量是相同的。

下面简单介绍一下这两个函数的用法:

# 导入pandas包
import pandas as pd
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32] # 待分箱数据
bins = [18, 25, 35, 60, 100] # 指定箱子的分界点

pandas.cut函数 :

cats1 = pd.cut(ages, bins)
cats1

cats1结果:

[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60],
(35, 60], (25, 35]]
Length: 12
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
# labels参数为False时,返回结果中用不同的整数作为箱子的指示符
cats2 = pd.cut(ages, bins,labels=False) 
cats2 # 输出结果中的数字对应着不同的箱子

cats2结果:

array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int64)
pd.value_counts(cats1) # 对不同箱子中的数进行计数

计数结果:

(18, 25]  5
(35, 60]  3
(25, 35]  3
(60, 100] 1
dtype: int64
pd.cut(ages, [18, 26, 36, 61, 100], right=False) # 指定分箱区间是左闭右开

改变区间开闭结果:

[[18, 26), [18, 26), [18, 26), [26, 36), [18, 26), ..., [26, 36), [61, 100), [36, 61),
[36, 61), [26, 36)]
Length: 12
Categories (4, interval[int64]): [[18, 26) < [26, 36) < [36, 61) < [61, 100)]
# 可以将想要指定给不同箱子的标签传递给labels参数
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
cuts3 = pd.cut(ages, bins, labels=group_names) 
cuts3

cats3结果:

[Youth, Youth, Youth, YoungAdult, Youth, ..., YoungAdult, Senior, MiddleAged,
MiddleAged, YoungAdult]
Length: 12
Categories (4, object): [Youth < YoungAdult < MiddleAged < Senior]

pandas.qcut函数:

qcats1 = pd.qcut(ages,q=4) # 参数q指定所分箱子的数量
qcats1

qcats1结果:

[(19.999, 22.75], (19.999, 22.75], (22.75, 29.0], (22.75, 29.0], (19.999, 22.75], ...,
(29.0, 38.0], (38.0, 61.0], (38.0, 61.0], (38.0, 61.0], (29.0, 38.0]]
Length: 12
Categories (4, interval[float64]): [(19.999, 22.75] < (22.75, 29.0] < (29.0, 38.0] <
(38.0, 61.0]]
qcats1.value_counts() # 从输出结果可以看到每个箱子中的数据量时相同的

计数结果:

(19.999, 22.75] 3
(22.75, 29.0]  3
(29.0, 38.0]  3
(38.0, 61.0]  3
dtype: int64

​​​参考:《利用Python进行数据分析》——Wes McKinney 第二版

以上这篇使用pandas实现连续数据的离散化处理方式(分箱操作)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用CMD模块更优雅的运行脚本
May 11 Python
将Python代码嵌入C++程序进行编写的实例
Jul 31 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
Python多线程原理与用法详解
Aug 20 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
Python OpenCV读取显示视频的方法示例
Feb 20 Python
Python3 assert断言实现原理解析
Mar 02 Python
python输出数学符号实例
May 11 Python
python时间time模块处理大全
Oct 25 Python
在OpenCV里使用Camshift算法的实现
Nov 22 #Python
利用Python的sympy包求解一元三次方程示例
Nov 22 #Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 #Python
python快速排序的实现及运行时间比较
Nov 22 #Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 #Python
Python Celery多队列配置代码实例
Nov 22 #Python
python 协程 gevent原理与用法分析
Nov 22 #Python
You might like
一步一步学习PHP(3) php 函数
2010/02/15 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
python+opencv实现摄像头调用的方法
2019/06/22 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
监理资料员岗位职责
2014/01/03 职场文书
债务纠纷起诉书
2015/05/20 职场文书
工作经历证明范本
2015/06/15 职场文书
关于环保的宣传稿
2015/07/23 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python