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

任何事情都是由量变到质变的过程,学习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函数定义

cut函数使用需先调用pandas库,它主要用于将数组元素分成不同的箱。

其基本调用语法如下:

pd.cut(x, bins, right: bool = True, labels=None, retbins: bool = False, precision: int = 3, include_lowest: bool = False, duplicates: str = 'raise')
x:待切割的一维数组。
bins:定义切割数组的方式,如果为数值,表示把数组均分切分为几段。如果为列表,表示切割时各段的间隔点。
right:表示切割后区间的右边是否闭合,默认值为True。
labels:切割后的区间是否打标签。


二、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”模块相关文章。

往期回顾:
520表白代码合集
一文囊括Python中的函数,持续更新。。。
一文囊括Python中的有趣案例,持续更新。。。
让你彻底弄懂Python编程经典案例【考题】之反转一个值
Python编程经典案例【考题】自由落体运动球的运动轨迹
六一儿童节来临,送大朋友小朋友一只最近爆火的“可达鸭”



扫一扫关注我

13162366985

投稿微信号、手机号

请使用浏览器的分享功能分享到微信等