使用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写日志封装类实例
Jun 28 Python
Python实现注册登录系统
Aug 08 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
Windows下python3.6.4安装教程
Jul 31 Python
Python比较配置文件的方法实例详解
Jun 06 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
Python如何测试stdout输出
Aug 10 Python
如何使用Python调整图像大小
Sep 26 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
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP实现的日历功能示例
2018/09/01 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
python正则中最短匹配实现代码
2018/01/16 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
外企C语言笔试题
2013/11/10 面试题
《傅雷家书》教学反思
2014/04/20 职场文书
新书发布会策划方案
2014/06/09 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
Nginx快速入门教程
2021/03/31 Servers
一级电子管军用接收机测评
2022/04/05 无线电