pythoncut_pythonpandascut⽤法及代码⽰例
将值分成离散间隔。
利⽤cut当您需要将数据值细分并分类到bin中时。此功能对于从连续变量到分类变量也很有⽤。例如,cut可以将年龄转换为年龄范围的组。⽀持合并到相等数量的容器中,或⽀持预先指定的容器阵列。
参数:
x:array-like要合并的输⼊数组。必须是⼀维的。
bins:int, sequence of scalars, 或 IntervalIndex分级依据。
int:定义equal-width个bin的数量,范围为x。范围x每侧扩展.1%以包括最⼩和最⼤值x。
标量序列:定义⾯元边以允许宽度不均匀。没有扩⼤范围x已经完成了。
IntervalIndex:定义要使⽤的确切bin。请注意,IntervalIndex⽤于bins必须不重叠。
right:bool, 默认为 True指⽰是否bins是否包含最右边。如果right == True(默认),然后bins [1, 2, 3, 4]表⽰(1,2],(2,3],(3,4]。当bins是⼀个IntervalIndex。
labels:array 或 False, 默认为 None指定返回的垃圾箱的标签。必须与⽣成的垃圾箱长度相同。如果为False,则仅返回垃圾箱的整数指⽰符。这会影响输出容器的类型(请参见下⽂)。在以下情况下将忽略此参数bins是⼀个IntervalIndex。如果为True,则会引发错误。
retbins:bool, 默认为 False是否归还垃圾箱。当将垃圾箱作为标量提供时很有⽤。
precision:int, 默认为 3存储和显⽰垃圾箱标签的精度。
include_lowest:bool, 默认为 False第⼀个间隔是否应为left-inclusive。
duplicates:{default ‘raise’, ‘drop’}, 可选参数如果bin边不是唯⼀的,则引发ValueError或丢弃⾮唯⼀的。
0.23.0版中的新功能。
返回值:
out:分类, Series 或ndarray⼀个array-like对象,代表每个bin值的相应binx。类型取决于值labels。
True(默认):为 Series 返回 Series x或所有其他输⼊的分类。存储在其中的值是Interval dtype。
标量序列:将⼀个 Series 返回⼀个 Series x或所有其他输⼊的分类。存储在其中的值是序列中的任何类型。
False:返回整数的ndarray。
bins:numpy.ndarray或IntervalIndex。计算或指定的箱。仅在以下时间返回retbins=True。对于标量或序列bins,这是带有计算箱的ndarray。如果设置duplicates=drop, bins将丢弃⾮唯⼀垃圾箱。对于IntervalIndexbins,等于bins。
注意:
任何NA值将是结果中的NA。超出的值将是所得 Series 或分类对象中的NA。
例⼦:
离散成三个相等⼤⼩的容器。
>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3)
...
[(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], ...
Categories (3, interval[float64]):[(0.994, 3.0] < (3.0, 5.0] ...
>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3, retbins=True)
...
([(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], ...
Categories (3, interval[float64]):[(0.994, 3.0] < (3.0, 5.0] ...
array([0.994, 3. , 5. , 7. ]))
发现相同的垃圾箱,但为其分配特定的标签。请注意,返回的分类类别为labels并被排序。>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]),
... 3, labels=["bad", "medium", "good"])
[bad, good, medium, medium, good, bad]
Categories (3, object):[bad < medium < good]
labels=False表⽰您只想将垃圾箱退回。
>>> pd.cut([0, 1, 1, 2], bins=4, labels=False)
array([0, 1, 1, 3])
传递 Series 作为输⼊将返回具有分类dtype的 Series :
>>> s = pd.Series(np.array([2, 4, 6, 8, 10]),
... index=['a', 'b', 'c', 'd', 'e'])
>>> pd.cut(s, 3)
...
a (1.992, 4.667]
b (1.992, 4.667]
c (4.667, 7.333]
d (7.333, 10.0]
e (7.333, 10.0]
dtype:category
Categories (3, interval[float64]):[(1.992, 4.667] < (4.667, ...
传递序列作为输⼊将返回具有映射值的序列。它⽤于根据仓位数字映射到间隔。
>>> s = pd.Series(np.array([2, 4, 6, 8, 10]),
... index=['a', 'b', 'c', 'd', 'e'])
>>> pd.cut(s, [0, 2, 4, 6, 8, 10], labels=False, retbins=True, right=False)
...
(a 0.0
b 1.0
c 2.0
d 3.0
e 4.0
python新手代码及作用dtype:float64, array([0, 2, 4, 6, 8]))
利⽤drop垃圾箱不是唯⼀的时可选
>>> pd.cut(s, [0, 2, 4, 6, 10, 10], labels=False, retbins=True,
... right=False, duplicates='drop')
...
(a 0.0
b 1.0
c 2.0
d 3.0
e 3.0
dtype:float64, array([0, 2, 4, 6, 8]))
传递⼀个IntervalIndexbins准确地得出这些类别。请注意,IntervalIndex未涵盖的值设置为NaN。 0在第⼀个容器的左侧(右侧关闭),⽽1.5在两个容器之间。
>>> bins = pd.IntervalIndex.from_tuples([(0, 1), (2, 3), (4, 5)])
>>> pd.cut([0, 0.5, 1.5, 2.5, 4.5], bins)
[NaN, (0, 1], NaN, (2, 3], (4, 5]]
Categories (3, interval[int64]):[(0, 1] < (2, 3] < (4, 5]]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论