- 浏览: 170381 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (173)
- Cocos2d-X (11)
- ubuntu (17)
- ofbiz (7)
- freemarker (1)
- nginx (9)
- redHat (7)
- SpringBoot (13)
- C# (0)
- PHP (2)
- Android (0)
- 咖啡豆 (7)
- Python (21)
- IONIC (8)
- AngularJS (1)
- 大鲸鱼 (10)
- 好玩的东西 (11)
- mysql 占用 (5)
- kelude (1)
- jS (0)
- Wx (1)
- H5-M500 (3)
- 开发即运维 (4)
- ReactNative (11)
- C++ (0)
- 其他杂项 (2)
- Truffle (1)
- WebLogic (0)
- Unity3D (0)
- WeChatMiniProgram (0)
- 小程序 (3)
- OLAP (1)
- ceb (1)
- 微信小程序 (2)
- 小程序undefined (1)
- 小程序机型问题 (1)
- Olingo (1)
- Cocos Creator (2)
- kylin (1)
- docker network (1)
最新评论
-
沈寅麟:
如果:[MySQL] specified key was to ...
OFBiz使用utf8mb4保存emoji -
沈寅麟:
从主机复制文件到容器里主机–>容器1,获取容器ID使用s ...
退出不关闭容器 -
沈寅麟:
conf.d/default.config---------- ...
Nginx配置AJP -
沈寅麟:
配置完nginx,在启动的时候遇到如下问题:nginx: [e ...
Nginx配置AJP -
沈寅麟:
docker commit [OPTIONS] CONTAIN ...
退出不关闭容器
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(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中。
发表评论
-
ImportError: No module named flask 但pip list 已经安装了 centeros
2020-07-30 18:37 505删除原有的用大写开头的Flask插件 pip unins ... -
CenterOS 安装Python3.7 环境
2020-07-30 17:15 609全部操作都在root用户下执行 1.安装编译相关工具 ... -
AttributeError: 'Request' object has no attribute 'is_xhr' flask 错误 ERROR in 报错
2020-04-10 15:08 822AttributeError: 'Request' objec ... -
pip install *太慢*无法下载*卡住*
2020-04-09 16:14 637直接用阿里云Pypi pip config set globa ... -
Jupyter Notebook 快捷键汇总
2019-09-12 17:57 416Jupyter Notebook 包含两种模式。一种是命令模式 ... -
线性相关及张成空间
2019-08-21 10:31 938为了使 A−1 存在,等式 Ax=b 对每个b 值有一个解。然 ... -
plt.subplot 图
2019-07-19 23:30 1109https://matplotlib.org/api/_as_ ... -
pandas——read_csv
2019-05-29 01:05 1274read_csv 方法 返回数据类型: DataFrame:二 ... -
Pandas 的melt的使用
2019-05-29 00:41 1480pandas.melt(frame, id_vars=None ... -
python3调用js的库之execjs
2019-05-10 10:14 2273执行JS的类库:execjs,PyV8,selenium,no ... -
matplotlib 中文乱码
2019-05-08 00:54 536import matplotlib.pyplot as p ... -
python input 输出 “Name 'XXX' is not defined
2019-05-04 11:50 1759names = input("Enter your ... -
Mac 控制台 终端始终 出现"(base)" ?
2019-05-03 18:32 4407那是因为你安装了Anaconda Jupyter 不要担心 这 ... -
S1-jieba分词
2018-05-08 16:06 575pip install jieba 简单用 ... -
新手扒图
2018-04-19 11:51 554新手写的比较拙劣 但达到效果了。 py是个好东西 ... -
DJango表单错误CSRF verification failed. Request aborted
2016-12-01 18:01 1186Django错误: [CSRF verification f ... -
dJangoの初习3
2016-10-14 16:10 651DJango 简单的GET 方式 传值,并返回打印到页面上. ... -
dJangoの初习2
2016-10-14 15:27 591应用、请求地址、与视图. 先创建一个项目用于实验. djan ... -
dJangoの初习1
2016-10-14 02:23 629DJango是一个开源Web应用框架,由python写成的[M ... -
Windows下部署python环境及基本使用
2016-10-13 16:45 8171.安装Python,现在自己安装,注意选择的目录 ...
相关推荐
### pandas.cut 具体使用总结 #### 一、概述 `pandas.cut` 是 Pandas 库中的一个重要函数,主要用于将连续数值数据转换为离散的区间或类别。这一功能在数据分析与处理过程中非常常见,尤其是在对数据进行分段统计...
在数据分析和数据预处理过程中,将数值数据分组或分箱是常见的操作,Pandas 提供了两个非常有用的函数 `pandas.cut` 和 `pandas.qcut` 来实现这一功能。这两个函数都能将一维数组或 Series 分割成多个区间,但它们的...
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....
Python实现连续数据的离散化处理主要基于两个函数,pandas.cut和pandas.qcut,前者根据指定分界点对连续数据进行分箱处理,后者则可以根据指定箱子的数量对连续数据进行等宽分箱处理,所谓等宽指的是每个箱子中的...
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False) x:要分箱的输入数组,必须是一维的 bins:int或标量序列 若bins是一个int,它定义在x范围内的等宽单元的数量。...
- 分桶操作:`cut()`和`qcut()`。 - 数据重塑:`pivot()`, `stack()`, `unstack()`。 - 高级数据选择:`query()`和`eval()`。 通过阅读《Pandas中文手册》中的Cookbook和源码注释,你可以逐步掌握这些功能,并将...
pandas可以通过`cut()`或`qcut()`函数将连续变量切分为区间,便于模型处理。对于类别变量,pandas通常结合`get_dummies()`或`pd.Series.str.get_dummies()`来创建虚拟变量(哑变量),以便模型理解非数值特征。 本...
28. **解释Pandas的`cut`和`qcut`函数及其用途。** - `cut`用于将连续变量离散化为分类变量: ```python bins = pd.cut(df['col'], bins=5) ``` - `qcut`用于基于数据分布将其分为等频的区间: ```python ...
2. 数据分桶和分位数:cut()和qcut()函数用于将连续数据分到指定的区间,quantile()计算数据的分位数。 3. 数据可视化:Pandas可以结合Matplotlib和Seaborn库进行数据可视化,便于理解数据分布和趋势。 4. 性能...
7. **高级功能**:Pandas还提供了许多高级功能,如分桶统计(`cut()`, `qcut()`)、透视表(`pivot_table()`)、时间序列重采样、字符串操作、条件筛选等。 8. **性能优化**:Pandas利用NumPy底层的C和Fortran库,...
5. 图像分割:通过阈值处理、区域生长、GrabCut算法等实现。 6. 机器学习:集成了一些经典的机器学习算法,如支持向量机(SVM)和级联分类器,用于人脸识别等任务。 这个压缩包中的“pandas”部分可能包含了一些...
9. **数据重塑和分桶Reshaping and Binning**: `pivot()`, `pivot_table()`, `cut()`, `qcut()`用于转换数据结构和分组数据。 10. **数据导出Exporting Data**: DataFrame可以通过`to_csv()`, `to_excel()`, `to_sql...
28. 新增分组列:`df['group'] = pd.cut(df['salary'], bins=3)`根据salary列将数据分为三组。 29. 降序排列:`df.sort_values('salary', ascending=False)`按salary列降序排列。 30. 获取指定行:`df.iloc[32]`获取...
* `cut()`: 按照指定列的值对数据表进行分箱分析。 7. 数据表的统计分析 pandas 提供了多种方式来进行统计分析,包括: * `mean()`: 计算数据表的平均值。 * `std()`: 计算数据表的标准差。 * `min()`: 计算数据...
3. **数据分桶和截断**: 使用cut()和qcut()函数进行数据分段。 4. **时间和日期功能增强**: 了解时区处理、日期间隔计算等高级特性。 5. **数据合并的复杂情况**: 如何处理多个键的合并,以及合并中的冲突解决策略。...
例如,在提供的代码段中,使用了`pandas.cut()`函数对年龄进行分组,然后使用`pivot_table()`函数创建了一个交叉表,显示了不同年龄分层和性别组合下的样本数量。这可以帮助我们在进行相关分析之前先探索数据的结构...