连续数据的离散化处理--pandas.cut与pandas.qcut

Python实现连续数据的离散化处理主要基于两个函数,pandas.cutpandas.qcut,今天主要介绍这两个函数。

我们先回忆一下,连续数据离散化方法中无监督学习方法主要有两种:

  • 等宽法
    等宽法即是将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如属性值在[0,60]之间,最小值为0,最大值为60,我们要将其分为3等分,则区间被划分为[0,20] 、[21,40] 、[41,60],每个属性值对应属于它的那个区间。
  • 等频法
    等宽法即是将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如有60个样本,我们要将其分为k=3部分,则每部分的长度为20个样本。

其中,等宽法使用的函数为pandas.cut,等频法使用的函数为pandas.qcut
现在我们主要介绍一下两个函数.

一、pandas.cut–将数据均匀划分成n等份,每份的间距相等

pandas.cut()是按指定分界点对连续数据进行分箱处理。

pd.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False) 
  • x:需要离散化的数组、Series、DataFrame对象

  • bins:,分组数据,输入整数、序列尺度、或间隔索引,如果bins是一个整数,它定义了x宽度范围内的等宽面元数量,但是在这种情况下,x的范围在每个边上被延长1%,以保证包括x的最小值或最大值。如果bin是序列,它定义了允许非均匀bin宽度的bin边缘。在这种情况下没有x的范围的扩展。

  • right:right=True表示分组右边闭合,right=False表示分组左边闭合

  • labels:表示分组的自定义标签,必须与结果箱相同长度。如果FALSE,只返回整数指标面元。

  • retbins:布尔值,是否返回面元,retbins为True还返回用浮点数填充的N维数组

  • precision:整数。返回面元的小数点几位

  • include_lowest:布尔值,第一个区间的左端点是否包含

下面我们用代码了解其主要做作用:

#导包
import numpy as np
import pandas as pd
# 有一组人员年龄数据,希望将这些数据划分为"18到25""26到35","36到60""60以上"几个面元
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]   
bins = [18, 25, 35, 60, 100] ]# 指定箱子的分界点

pandas.cut函数:

cut_1= pd.cut(ages,bins)
cut_1

cut_1输出结果:返回的是一个特殊的Categorical对象–一组表示面元名称的字符串

[(18, 25], (18, 25], (18, 25], (25, 
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值