使用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中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
python之消除前缀重命名的方法
Oct 21 Python
用Python实现数据的透视表的方法
Nov 16 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
解决python tkinter界面卡死的问题
Jul 17 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Python中常见的导入方式总结
May 06 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
深入php多态的实现详解
2013/06/09 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP简单遍历对象示例
2016/09/28 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中字符串变二维数组的实例讲解
2018/04/03 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
经济类毕业生求职信
2014/06/26 职场文书
劳模先进事迹材料
2014/12/24 职场文书
投标承诺函范文
2015/01/21 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
2016高考感言
2015/08/01 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android
Windows server 2016服务器基本设置
2022/08/14 Servers