任何事情都是由量变到质变的过程,学习Python也不例外。
只有把一个语言中的常用函数了如指掌了,才能在处理问题的过程中得心应手,快速地找到最优方案。
本文和你一起来探索Python中的cut函数,让你以最短的时间明白这个函数的原理。
也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。
本文目录
- cut函数定义
- 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”模块相关文章。