cut( )用来把一组数据分割成离散的区间。

cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
# x:被切分的数据,必须是一维的
# bins:①int型整数:将x按照数值大小平均分成分成bins份,x的范围在最左侧和最右侧分别扩展0.1%以包括最大值和最小值#②标量序列:自定义分组的每个区间,此时严格按照给定的区间分割,x最左和最右不扩展#③pandas.IntervalIndex
# right:布尔值,默认为True,表示分割后包含区间右侧值不包含左侧值,False表示分割后包含左侧值不包括右侧值
# labels:分组后bins的标签,默认为None显示分割后属于的区间
# retbins:返回结果中是否包括bins,一般bins参数使用整数时
# precision:保留的小数点位数,默认为3
# include_lowest:如果自定义标量序列分组,第一个区间是否包含左侧最小值
# duplicates:是否允许区间重复

bins设置为整数,将一维数组平均分为5份

arr = np.array([1,77,10,89,36,12,58,62,5,40,32,18,20,25,30,100])
c = pd.cut(arr,5,precision=1)
print(c)
# [(0.9, 20.8], (60.4, 80.2], (0.9, 20.8], (80.2, 100.0], (20.8, 40.6], ..., (0.9, 20.8], (0.9, 20.8], (20.8, 40.6], (20.8, 40.6], (80.2, 100.0]]
# Length: 16
# Categories (5, interval[float64]): [(0.9, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]

系统自动根据数组中数值的大小将原数据平均分为5分,每个区间间隔为19.8。整个区间的起点为(1,100],由于右侧包含了100因此最大区间的最大值无需扩展,而由于不包括1,因此最小区间的最小值需向左扩展0.1% * 100 = 0.1,即1-0.1 = 0.9。

设置retbins=True,会将分割区间以数组形式显示出来,这个参数一般在bins设置为整数时使用,因为其他bins两种方式都是自定义了这个区间。

arr = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32])
c = pd.cut(arr,5,precision=1,retbins = True)
print(c)
# ([(0.9, 20.8], (0.9, 20.8], (0.9, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.9, 20.8], (0.9, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]]
# Length: 16
# Categories (5, interval[float64]): [(0.9, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]], \#             array([  0.901,  20.8  ,  40.6  ,  60.4  ,  80.2  , 100.   ]))

bins自定义分组序列,并指定lables

c = pd.cut(arr,bins = [1,5,18,35,50,100],labels = ['幼儿','少年','青年','中年','老年'],precision=1)
print(c)
# [NaN, 老年, 少年, 老年, 中年, ..., 少年, 青年, 青年, 青年, 老年]
# Length: 16
# Categories (5, object): [幼儿 < 少年 < 青年 < 中年 < 老年]

上述示例的意思是,将原数组按照1-5、5-18、18-35、35-50、50-100(左开右闭)的区间进行划分,划分后分别对应幼儿、少年、青年、中年、老年。

但是由于默认为左开区间所以无法将最小值划到一个给定的区间(如果设置right=False则最大值无对应区间),因此原数组中的第一个数1返回的是NaN,可以设置参数include_lowest=True,则可将最小是包含进去。

c = pd.cut(arr,bins = [1,5,18,35,50,100],labels = ['幼儿','少年','青年','中年','老年'],precision=1,include_lowest=True)
print(c)
# [幼儿, 老年, 少年, 老年, 中年, ..., 少年, 青年, 青年, 青年, 老年]
# Length: 16
# Categories (5, object): [幼儿 < 少年 < 青年 < 中年 < 老年]

上述例子的返回结果包含三项,第一项是每个数属于哪个区间,第二个是原数组长度,第三个是Category对象

如果只想显示第一项、即数组中的每个值属于哪个区间,可设置为labels = False

c= pd.cut(arr,bins = [1,5,18,35,50,100],labels=False,include_lowest=True)
print(c)
# [0 0 1 3 3 1 4 4 4 4 4 1 2 2 2 2]

转载于:https://www.cnblogs.com/Forever77/p/11342851.html

pandas之cut相关推荐

  1. pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决

    pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决 目录 pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决 ...

  2. 再见 for 循环!pandas 提速 315 倍~

    for是所有编程语言的基础语法,初学者为了快速实现功能,依懒性较强.但如果从运算时间性能上考虑可能不是特别好的选择. 本次东哥介绍几个常见的提速方法,一个比一个快,了解pandas本质,才能知道如何提 ...

  3. Scikit-Learn大变化:合并Pandas

    作者 | Ted Petrou 译者 | 王天宇 编辑 | Jane 出品 | AI科技大本营 [导读]近日,Scikit-Learn 发布了 0.20 版本,这是近年来最大的一次更新.对许多数据科学 ...

  4. python pandas for循环_高逼格使用Pandas加速代码,向for循环说拜拜!

    原标题:高逼格使用Pandas加速代码,向for循环说拜拜! 作者:George Seif 编译:公众号翻译部 全网进行中··· 你为什么劝入/劝退Quant? 前言 使用Pandas datafra ...

  5. 用 Python 做数据处理必看:12 个使效率倍增的 Pandas 技巧(下)

    点击打开链接 7 – 数据框合并 当我们有收集自不同来源的数据时,合并数据框就变得至关重要.假设对于不同的房产类型,我们有不同的房屋均价数据.让我们定义这样一个数据框: prop_rates = pd ...

  6. 查看某个方法在哪里被调用_一篇文章带你查看并处理Pandas数据

    今天我们将一下如何查看Pandas中的各类数据以及对Pandas进行处理的一些方法,通过这些方法我们可以更快的掌握Pandas对数据进行处理: 描述与统计 函数应用 修改列/行索引名称 类型的操作 表 ...

  7. python pandas教程百家号_python--学习笔记6 pandas

    from pandas import Series,DataFrame #注意大小写 import pandas as pd Series的字符串表现形式为:索引在左边,值在右边. 可以通过Serie ...

  8. python--学习笔记6 pandas

    from pandas import Series,DataFrame #注意大小写import pandas as pd Series的字符串表现形式为:索引在左边,值在右边. 可以通过Series ...

  9. pandas 对某一行标准化_Python中的神器Pandas,但是有人说Pandas慢...

    如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜.Pandas在数据科学和分析领域扮演越来越重要的角色,尤其是对于从Excel和VBA转向Python的用户. 所以,对于数据科学家 ...

最新文章

  1. C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息
  2. x86中的页表结构和页表项格式
  3. Keyword-Driven Testing
  4. js下的keyCode.
  5. 【Java】字符串编程练习题
  6. Activity之间的简单跳转
  7. Entity Framework 4.1 (强转)
  8. maven 创建project
  9. BigDecimal用法介绍
  10. 无法创建新虚拟机: 无法打开配置文件“E:\vmware\Windows7.vmx”: 拒绝访问。
  11. UE4 官方文档C++编程教程笔记
  12. ArcGIS版本更新对比
  13. MongoVue 破解治标不治本
  14. KDD2020|字节联合密歇根州立大学提出推荐广告联合训练框架RAM(已开源)
  15. vue-element-admin右侧内容数据量多时,el-menu侧边栏收缩/展开卡顿问题
  16. 计算机发展简史及其关键技术年表
  17. 天龙八部 - 其它 - 手工选择
  18. ACM MM 2022最佳论文奖出炉!哈工大聂礼强团队与快手合作斩获
  19. 5,10,15,20-四苯基卟啉(TPP)及金属配合物FeTPP/MnTPP/CuTPP/ZnTPP/NiTPP/CoTPP/PtTPP/PdTPP/CdTPP齐岳供应
  20. 常见花材的固定的方法有哪些_别再傻傻只知道使用花泥了,这4种纯天然花材固定方法你该试试!...

热门文章

  1. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
  2. BZOJ1014: [JSOI2008]火星人prefix
  3. 第一章-从双向链表学习设计
  4. Oracle使用hs odbc连接mssql2008
  5. 初学 Unsupervised feature learning and deep learning--Sparse autoencoder
  6. Spring Cloud Sleuth进阶实战
  7. ionic3 调用本地相册并上传图片
  8. Ant Build.xml
  9. Spring Cloud 学习 (五) Zuul
  10. Bitmap尺度变换