pandas.cut具体使用总结

 更新时间:2019年06月24日 11:48:50   作者:ColdCode  
这篇文章主要介绍了pandas.cut具体使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

用途

pandas.cut用来把一组数据分割成离散的区间。比如有一组年龄数据,可以使用pandas.cut将年龄数据分割成不同的年龄段并打上标签。

原型

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') #0.23.4

参数含义

x:被切分的类数组(array-like)数据,必须是1维的(不能用DataFrame);

bins:bins是被切割后的区间(或者叫“桶”、“箱”、“面元”),有3中形式:一个int型的标量、标量序列(数组)或者pandas.IntervalIndex 。

一个int型的标量

 当bins为一个int型的标量时,代表将x平分成bins份。x的范围在每侧扩展0.1%,以包括x的最大值和最小值。

标量序列

 标量序列定义了被分割后每一个bin的区间边缘,此时x没有扩展。

pandas.IntervalIndex

定义要使用的精确区间。

right:bool型参数,默认为True,表示是否包含区间右部。比如如果bins=[1,2,3],right=True,则区间为(1,2],(2,3];right=False,则区间为(1,2),(2,3)。

labels:给分割后的bins打标签,比如把年龄x分割成年龄段bins后,可以给年龄段打上诸如青年、中年的标签。labels的长度必须和划分后的区间长度相等,比如bins=[1,2,3],划分后有2个区间(1,2],(2,3],则labels的长度必须为2。如果指定

labels=False,则返回x中的数据在第几个bin中(从0开始)。

retbins:bool型的参数,表示是否将分割后的bins返回,当bins为一个int型的标量时比较有用,这样可以得到划分后的区间,默认为False。

precision:保留区间小数点的位数,默认为3.

include_lowest:bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)。

duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。

返回值

out:一个pandas.Categorical, Series或者ndarray类型的值,代表分区后x中的每个值在哪个bin(区间)中,如果指定了labels,则返回对应的label。

bins:分隔后的区间,当指定retbins为True时返回。

例子

这里拿给年龄分组当做例子。

import numpy as np
import pandas as pd

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据

将ages平分成5个区间

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) 
pd.cut(ages, 5)

输出:

[(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]]
Length: 16
Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]

可以看到ages被平分成5个区间,且区间两边都有扩展以包含最大值和最小值。

将ages平分成5个区间并指定labels

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, 5, labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])

输出:

[婴儿, 婴儿, 婴儿, 青年, 青年, ..., 婴儿, 婴儿, 青年, 青年, 青年]
Length: 16
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]

给ages指定区间进行分割

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])

输出:

[婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
Length: 16
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]

这里不再平分ages,而是将ages分为了5个区间(0, 5],(5, 20],(20, 30],(30,50],(50,100].

返回分割后的bins

令retbins=True即可

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)

输出:

([婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
 Length: 16
 Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年],
 array([  0,   5,  20,  30,  50, 100]))

只返回x中的数据在哪个bin

令labels=False即可

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=False)

输出:

array([0, 0, 1, 3, 3, 1, 4, 4, 4, 4, 4, 1, 1, 2, 2, 3], dtype=int64)

第一个0表示1在第0个bin中。

参考

1.https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.cut.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python区块链交易类教程

    Python区块链交易类教程

    这篇文章主要为大家介绍了Python区块链交易类的示例详解教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 计算机二级python学习教程(3) python语言基本数据类型

    计算机二级python学习教程(3) python语言基本数据类型

    这篇文章主要为大家详细介绍了计算机二级python学习教程的第3篇,python语言基本数据类型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Transformer导论之Bert预训练语言解析

    Transformer导论之Bert预训练语言解析

    这篇文章主要为大家介绍了Transformer导论之Bert预训练语言解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • python绘制直方图的方法

    python绘制直方图的方法

    这篇文章主要为大家详细介绍了python绘制直方图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • python 将字符串中的数字相加求和的实现

    python 将字符串中的数字相加求和的实现

    这篇文章主要介绍了python 将字符串中的数字相加求和的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 对python中字典keys,values,items的使用详解

    对python中字典keys,values,items的使用详解

    今天小编就为大家分享一篇对python中字典keys,values,items的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python Locust负载测试工具安装配置使用详解

    Python Locust负载测试工具安装配置使用详解

    本文将提供有关Python Locust的全面指南,包括安装和配置、基本概念、性能测试、任务编写、报告生成以及实际应用场景,将通过丰富的示例代码来帮助深入理解Locust的使用
    2024-01-01
  • 基于python实现雪花算法过程详解

    基于python实现雪花算法过程详解

    这篇文章主要介绍了基于python实现雪花算法过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据

    python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据

    本文将展示如何使用python搭建一个网页应用来展示你的数据图表 很多有关于使用python搭建网页应用的文章聚焦在如何教读者搭建一个网页应用(大多是博客),很多关于使用python做数据可视化的文章聚焦在如何教读者使用python的图表库来做可视化
    2021-10-10
  • 动态创建类实例代码

    动态创建类实例代码

    Python中要创建一个类的实例,要首先导入该类或者该类所属的模块。
    2009-10-10

最新评论