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

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

文章目录

    • 一、cut函数定义
    • 二、cut函数实例
      • 1 导入库并加载数据
      • 2 原始数据分布
      • 3 用cut函数按指定数目切分
      • 4 用cut函数按切隔点切分
      • 5 测试cut函数中的right参数
      • 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 random
import numpy as np
import 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    3103
3    2913
1    2266
4    1412
0     587
Name: 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]    2853
Name: 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]     587
Name: 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]     587
Name: 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    5369
group3    4325
group1     587
Name: num_cars_owned, dtype: int64

从结果知,labels参数赋值只是把原来的分组用标签替换了。
  
至此,Python中的cut函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
用Python绘制520永恒心动
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

你可能感兴趣的:(学习python,python)