使用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编程中使用Pillow来处理图像的基础教程
Nov 20 Python
Python基础教程之正则表达式基本语法以及re模块
Mar 25 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
Python 使用多属性来进行排序
Sep 01 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
Python数组并集交集补集代码实例
Feb 18 Python
如何基于python实现不邻接植花
May 01 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
python的链表基础知识点
Sep 13 Python
python pygame 开发五子棋双人对弈
May 02 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连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
javascript比较文档位置
2008/04/08 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
python字符串与url编码的转换实例
2018/05/10 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
python 如何将office文件转换为PDF
2020/09/22 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
中学生班主任评语
2014/01/30 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫