使用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的Twisted框架实现一个简单的服务器
Apr 16 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
python 中random模块的常用方法总结
Jul 08 Python
浅谈python数据类型及类型转换
Dec 18 Python
Python获取指定字符前面的所有字符方法
May 02 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
对numpy中向量式三目运算符详解
Oct 31 Python
Python中的引用知识点总结
May 20 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
python 自动识别并连接串口的实现
Jan 19 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实现MySQL数据库备份与还原类实例
2014/12/09 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
JQuery写动态树示例代码
2013/07/31 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
python之Character string(实例讲解)
2017/09/25 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
用Python制作音乐海报
2021/01/26 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
新春文艺演出主持词
2014/03/27 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
亮剑观后感500字
2015/06/05 职场文书
话题作文之诚信
2019/11/28 职场文书
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js