https://www.cnblogs.com/sench/p/10128216.html

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

python中cut_pandas.cut相关推荐

  1. python中df head_10招!看骨灰级Pythoner如何玩转Python

    原标题:10招!看骨灰级Pythoner如何玩转Python pandas是基于numpy构建的,使数据分析工作变得更快更简单的高级数据结构和操作工具.本文为大家带来10个玩转Python的小技巧,学 ...

  2. python中显示第三行数据_Python从零开始第三章数据处理与分析①python中的dplyr(1)...

    前言 我经常使用R的dplyr软件包进行探索性数据分析和数据处理. dplyr除了提供一组可用于解决最常见数据操作问题的一致函数外,dplyr还允许用户使用管道函数编写优雅的可链接的数据操作代码. 现 ...

  3. python调用perl_在Perl、Shell和Python中传参与输出帮助文档

    本文同步发表于简书平台中 基于本人对多种编程语言的粗浅了解,不论是哪种编程语言它的参数传递方式主要分为下面两类:直接传递(以Perl为例进行说明) 在调用脚本时,直接传递参数,如:./script.p ...

  4. python中当地时间_R 与 Python 中与时间相关内容的梳理

    约万字长文预警,如果你没时间,就不用看了,这就是一个梳理的文章,方便我后来找资料. 因为工作的关系,近期需要梳理一些 Python 的知识(可能有小伙伴知道了,LI-6800 搞了个大动作,支持 Py ...

  5. python中api_通过Python中的API查找相关的工作技能

    python中api 工作技能世界 (The World of Job Skills) So you want to figure out where your skills fit into tod ...

  6. 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...

    循环 直到 python by Maxim Mamaev 马克西姆·马马耶夫(Maxim Mamaev) Let's take a computational problem as an exampl ...

  7. shell执行perl_【编程技巧(一)】在Perl、Shell和Python中传参与输出帮助文档

    社会你明哥,人狠话又多![小明的碎碎念]与你不见不散!作为一名搞数据的生物狗,咱们是生物狗中代码写得最六的,程序员中生物学得最好的--大家没意见吧,有意见请憋着 跟随小明的步伐,让我们开开心心地写Bu ...

  8. python中pandas是指什么_Python中的神器Pandas,但是有人说Pandas慢...

    原标题:Python中的神器Pandas,但是有人说Pandas慢... 如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤 ...

  9. python中usecols_Python学习路线?

    10招!看骨灰级Pythoner如何玩转Python? [学会一时间爽,一直学一直爽!] pandas是基于numpy构建的,使数据分析工作变得更快更简单的高级数据结构和操作工具.本文为大家带来10个 ...

最新文章

  1. MySQL 清理slowlog方法
  2. markdown中添加锚点
  3. 使用Spring Boot构建RESTFul服务
  4. 软件测试的学习之路-----计算机基础 (详情展示)
  5. js动态计算移动端rem
  6. VTM3.0代码阅读:xCheckRDCostMerge2Nx2N函数
  7. cadence PCB走等长线设置
  8. 男人的梦想:世界名车标志
  9. win10 休眠设置无效_win10休眠设置无效的解决教程
  10. win2008服务器系统玩红警,Win10系统不能玩红警2的解决方法
  11. 鸿蒙系统 智能手表,魅族官宣:你好,鸿蒙 首个第三方接入鸿蒙OS手机品牌新品亮相...
  12. 使用Quads绘制函数曲线
  13. 浏览器视频文件分段缓存合并成完整的视频
  14. 离散数学 极大元,极小元,最大元,最小元,上界,上确界,下界,下确界
  15. DBeaver安装及使用手册
  16. 自己动手写股票数据分析软件之数据获取
  17. GPU与深度学习和药物开发
  18. React Hooks (一文看懂四个常用的钩子)
  19. IT群侠传第四回大鱼小虾
  20. DCE和DTE的区别

热门文章

  1. IDEA 加断点debug时阻塞问题
  2. px4官网调参指南 多旋翼无人机PID调参指南
  3. python画图软件是哪个_Python实现画图软件功能方法详解
  4. 前端浏览器常见兼容性问题及解决方案
  5. %后的各种格式C语言详解
  6. 【算法和数据结构】模拟和暴力
  7. 自定义datastage阶段
  8. 2020-12-12
  9. Linux双网卡双ip配置
  10. android微信支付吊不起微信,安卓系统微信支付失败原因