【Python常用函数】一文让你彻底掌握Python中的cut函数

2023-01-14 10:57:57 浏览数 (1)

任何事情都是由量变到质变的过程,学习Python也不例外。

只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。

本文和你一起来探索Python中的cut函数,让你以最短的时间明白这个函数的原理。

也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。

本文目录

  1. cut函数定义
  2. cut函数实例 2.1 导入库并加载数据 2.1 原始数据分布 2.3 用cut函数按指定数目切分 2.4 用cut函数按切割点切分 2.5 测试cut函数中的right参数 2.6 测试cut函数中的labels参数

一、cut函数定义

代码语言:javascript复制
cut函数使用需先调用pandas库,它主要用于将数组元素分成不同的箱。

其基本调用语法如下:

代码语言:javascript复制
pd.cut(x, bins, right: bool = True, labels=None, retbins: bool = False, precision: int = 3, include_lowest: bool = False, duplicates: str = 'raise')x:待切割的一维数组。
代码语言:javascript复制
bins:定义切割数组的方式,如果为数值,表示把数组均分切分为几段。如果为列表,表示切割时各段的间隔点。
代码语言:javascript复制
right:表示切割后区间的右边是否闭合,默认值为True。labels:切割后的区间是否打标签。
代码语言:javascript复制
二、cut函数实例在对客户管理数据进行建模分析时,需要对原始数据进行预处理,包括运用cut函数对某些列进行平滑处理。

 1   导入库并加载数据首先,加载库并导入数据。import os import randomimport numpy as npimport pandas as pd 
#2.数据读取os.chdir(r'F:公众号4.决策树和随机森林')ori_date = pd.read_csv("customer.csv")
 2   原始数据分布接着,看下原始数据中客户拥有银行卡片的分布情况,代码如下:ori_date['num_cars_owned'].value_counts()得到结果:2    31033    29131    22664    14120     587Name: num_cars_owned, dtype: int64从结果知,客户拥有的银行卡数目从0到4。
 3   用cut函数按指定数目切分现在我们想把客户进行分类,假设我们想把客户分成3类,并统计三类的分布,代码如下:pd.cut(ori_date['num_cars_owned'], 3).value_counts()此时x为ori_date['num_cars_owned'],bins=3。得到结果:(2.667, 4.0]       4325(1.333, 2.667]     3103(-0.004, 1.333]    2853Name: num_cars_owned, dtype: int64可以发现0到1分成了一组,2单独分成了1组,3到4分成了1组。这种分组的原理是尽可能等分每组的数目。
 4   用cut函数按切隔点切分除了可以指定分组的数目,也可以设置分组的切割点。
比如首先区分是否有银行卡,在有银行卡的客户中区分银行卡的数目是否超过2,代码如下:pd.cut(ori_date['num_cars_owned'], [-1, 0, 2, 4]).value_counts()得到结果:(0, 2]     5369(2, 4]     4325(-1, 0]     587Name: num_cars_owned, dtype: int64可以发现0分到了一组,1和2分到了一组,3和4分到了一组。
 5   测试cut函数中的right参数测试一下right函数为False的结果,代码如下:
pd.cut(ori_date['num_cars_owned'], [-1, 0, 2, 4], right='False').value_counts()得到结果:(0, 2]     5369(2, 4]     4325(-1, 0]     587Name: num_cars_owned, dtype: int64从结果知,right为False的结果和right为True的结果一致,右区间依然闭合。
 6   测试cut函数中的labels参数最后,给分组后的箱加标签,代码如下:
pd.cut(ori_date['num_cars_owned'], [-1, 0, 2, 4], labels=['group1', 'group2', 'group3']).value_counts()得到结果:group2    5369group3    4325group1     587Name: num_cars_owned, dtype: int64从结果知,labels参数赋值只是把原来的分组用标签替换了。

至此,Python中的cut函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

0 人点赞