使用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 相关文章推荐
通过数据库向Django模型添加字段的示例
Jul 21 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
K-近邻算法的python实现代码分享
Dec 09 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
python pandas库的安装和创建
Jan 10 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
python判断变量是否为列表的方法
Sep 17 Python
关于python类SortedList详解
Sep 04 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php eval函数用法总结
2012/10/31 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
js微信分享API
2020/10/11 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
会计学个人自荐信模板
2013/12/13 职场文书
移风易俗倡议书
2014/04/15 职场文书
2014年新生军训方案
2014/05/01 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
个人股份合作协议书
2014/10/24 职场文书
应聘教师求职信范文
2015/03/20 职场文书
使用Pytorch训练two-head网络的操作
2021/05/28 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL