使用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科学计算之Pandas详解
Jan 15 Python
python实现textrank关键词提取
Jun 22 Python
python2 与 python3 实现共存的方法
Jul 12 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
python实现操作文件(文件夹)
Oct 31 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
浅谈python 类方法/静态方法
Sep 18 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
Pyhton模块和包相关知识总结
May 12 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
一个MYSQL操作类
2006/11/16 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
10款最好的Python开发编辑器
2019/07/03 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
django迁移文件migrations的实现
2020/03/31 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
小学教师国培感言
2014/02/08 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
高中生旷课检讨书
2014/10/08 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
结婚老公保证书
2015/02/26 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
alibaba seata服务端具体实现
2022/02/24 Java/Android
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫