`

pandas.cut

 
阅读更多
pandas.cut用来把一组数据分割成离散的区间。比如有一组年龄数据,可以使用pandas.cut将年龄数据分割成不同的年龄段并打上标签。

原型
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') #0.23.4
参数含义
x:被切分的类数组(array-like)数据,必须是1维的(不能用DataFrame);
bins:bins是被切割后的区间(或者叫“桶”、“箱”、“面元”),有3中形式:一个int型的标量、标量序列(数组)或者pandas.IntervalIndex 。

一个int型的标量
当bins为一个int型的标量时,代表将x平分成bins份。x的范围在每侧扩展0.1%,以包括x的最大值和最小值。
标量序列
标量序列定义了被分割后每一个bin的区间边缘,此时x没有扩展。
pandas.IntervalIndex
定义要使用的精确区间。
right:bool型参数,默认为True,表示是否包含区间右部。比如如果bins=[1,2,3],right=True,则区间为(1,2],(2,3];right=False,则区间为(1,2),(2,3)。
labels:给分割后的bins打标签,比如把年龄x分割成年龄段bins后,可以给年龄段打上诸如青年、中年的标签。labels的长度必须和划分后的区间长度相等,比如bins=[1,2,3],划分后有2个区间(1,2],(2,3],则labels的长度必须为2。如果指定labels=False,则返回x中的数据在第几个bin中(从0开始)。
retbins:bool型的参数,表示是否将分割后的bins返回,当bins为一个int型的标量时比较有用,这样可以得到划分后的区间,默认为False。
precision:保留区间小数点的位数,默认为3.
include_lowest:bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)。
duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。

返回值
out:一个pandas.Categorical, Series或者ndarray类型的值,代表分区后x中的每个值在哪个bin(区间)中,如果指定了labels,则返回对应的label。
bins:分隔后的区间,当指定retbins为True时返回。

例子
这里拿给年龄分组当做例子。

import numpy as np
import pandas as pd

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
将ages平分成5个区间
ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32])
pd.cut(ages, 5)
输出:

[(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]]
Length: 16
Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]
可以看到ages被平分成5个区间,且区间两边都有扩展以包含最大值和最小值。

将ages平分成5个区间并指定labels
ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, 5, labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
输出:

[婴儿, 婴儿, 婴儿, 青年, 青年, ..., 婴儿, 婴儿, 青年, 青年, 青年]
Length: 16
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
给ages指定区间进行分割
ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])
输出:

[婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
Length: 16
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年]
这里不再平分ages,而是将ages分为了5个区间(0, 5],(5, 20],(20, 30],(30,50],(50,100].

返回分割后的bins
令retbins=True即可

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"],retbins=True)
输出:

([婴儿, 婴儿, 青年, 壮年, 壮年, ..., 青年, 青年, 中年, 中年, 壮年]
Length: 16
Categories (5, object): [婴儿 < 青年 < 中年 < 壮年 < 老年],
array([  0,   5,  20,  30,  50, 100]))
只返回x中的数据在哪个bin
令labels=False即可

ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据
pd.cut(ages, [0,5,20,30,50,100], labels=False)
输出:

array([0, 0, 1, 3, 3, 1, 4, 4, 4, 4, 4, 1, 1, 2, 2, 3], dtype=int64)
第一个0表示1在第0个bin中。

分享到:
评论

相关推荐

    pandas.cut具体使用总结

    ### pandas.cut 具体使用总结 #### 一、概述 `pandas.cut` 是 Pandas 库中的一个重要函数,主要用于将连续数值数据转换为离散的区间或类别。这一功能在数据分析与处理过程中非常常见,尤其是在对数据进行分段统计...

    浅谈pandas.cut与pandas.qcut的使用方法及区别

    在数据分析和数据预处理过程中,将数值数据分组或分箱是常见的操作,Pandas 提供了两个非常有用的函数 `pandas.cut` 和 `pandas.qcut` 来实现这一功能。这两个函数都能将一维数组或 Series 分割成多个区间,但它们的...

    pandas数据离散化pandas.cut()和pandas.qcut()

    pandas数据离散化 什么叫数据离散化?也可以理解为数据分组。举个简单的例子,我们有一组学生成绩的数据,我们可以将数据按照成绩的最大值和最小值划分为...cutnum = pd.cut(tips['tip'],4) print(tips['tip']的最大值

    数据清洗之 数据离散化

    pandas.cut(x, bins, right=True, labels) x: 数据 bins: 离散化的数目,或者切分的区间 labels: 离散化后各个类别的标签 right: 是否包含区间右边的值 import pandas as pd import numpy as np import os os....

    使用pandas实现连续数据的离散化处理方式(分箱操作)

    Python实现连续数据的离散化处理主要基于两个函数,pandas.cut和pandas.qcut,前者根据指定分界点对连续数据进行分箱处理,后者则可以根据指定箱子的数量对连续数据进行等宽分箱处理,所谓等宽指的是每个箱子中的...

    关于pandas的离散化,面元划分详解

    pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False) x:要分箱的输入数组,必须是一维的 bins:int或标量序列 若bins是一个int,它定义在x范围内的等宽单元的数量。...

    Python机器学习编程与实战教学教案04pandas进阶.pdf

    pandas可以通过`cut()`或`qcut()`函数将连续变量切分为区间,便于模型处理。对于类别变量,pandas通常结合`get_dummies()`或`pd.Series.str.get_dummies()`来创建虚拟变量(哑变量),以便模型理解非数值特征。 本...

    pandas中文手册(pandas-cookbook).rar

    - 分桶操作:`cut()`和`qcut()`。 - 数据重塑:`pivot()`, `stack()`, `unstack()`。 - 高级数据选择:`query()`和`eval()`。 通过阅读《Pandas中文手册》中的Cookbook和源码注释,你可以逐步掌握这些功能,并将...

    Pandas面试题.pdf

    28. **解释Pandas的`cut`和`qcut`函数及其用途。** - `cut`用于将连续变量离散化为分类变量: ```python bins = pd.cut(df['col'], bins=5) ``` - `qcut`用于基于数据分布将其分为等频的区间: ```python ...

    pandas-1.1.2.tar.gz

    2. 数据分桶和分位数:cut()和qcut()函数用于将连续数据分到指定的区间,quantile()计算数据的分位数。 3. 数据可视化:Pandas可以结合Matplotlib和Seaborn库进行数据可视化,便于理解数据分布和趋势。 4. 性能...

    Pandas介绍123.zip

    7. **高级功能**:Pandas还提供了许多高级功能,如分桶统计(`cut()`, `qcut()`)、透视表(`pivot_table()`)、时间序列重采样、字符串操作、条件筛选等。 8. **性能优化**:Pandas利用NumPy底层的C和Fortran库,...

    pandas、opencv数据.rar

    5. 图像分割:通过阈值处理、区域生长、GrabCut算法等实现。 6. 机器学习:集成了一些经典的机器学习算法,如支持向量机(SVM)和级联分类器,用于人脸识别等任务。 这个压缩包中的“pandas”部分可能包含了一些...

    Numpy and Pandas Cheat Sheet.zip

    9. **数据重塑和分桶Reshaping and Binning**: `pivot()`, `pivot_table()`, `cut()`, `qcut()`用于转换数据结构和分组数据。 10. **数据导出Exporting Data**: DataFrame可以通过`to_csv()`, `to_excel()`, `to_sql...

    pandas笔试题.pdf

    28. 新增分组列:`df['group'] = pd.cut(df['salary'], bins=3)`根据salary列将数据分为三组。 29. 降序排列:`df.sort_values('salary', ascending=False)`按salary列降序排列。 30. 获取指定行:`df.iloc[32]`获取...

    5实验报告-pandas基本操作2.doc

    * `cut()`: 按照指定列的值对数据表进行分箱分析。 7. 数据表的统计分析 pandas 提供了多种方式来进行统计分析,包括: * `mean()`: 计算数据表的平均值。 * `std()`: 计算数据表的标准差。 * `min()`: 计算数据...

    pandas 中文手册

    3. **数据分桶和截断**: 使用cut()和qcut()函数进行数据分段。 4. **时间和日期功能增强**: 了解时区处理、日期间隔计算等高级特性。 5. **数据合并的复杂情况**: 如何处理多个键的合并,以及合并中的冲突解决策略。...

    Python中的相关分析correlation analysis的实现

    例如,在提供的代码段中,使用了`pandas.cut()`函数对年龄进行分组,然后使用`pivot_table()`函数创建了一个交叉表,显示了不同年龄分层和性别组合下的样本数量。这可以帮助我们在进行相关分析之前先探索数据的结构...

Global site tag (gtag.js) - Google Analytics