pandas的qcut能够把一组数字按大小区间进行分区,好比spa
data = pd.Series([0,8,1,5,3,7,2,6,10,4,9])
好比我要把这组数据分红两部分,一半大的,一半小的,若是是小的数,值就变成'small number',大的数,值就变成'large number':code
print(pd.qcut(data,[0,0.5,1],labels=['small number','large number']))
0 small numbers 1 large numbers 2 small numbers 3 small numbers 4 small numbers 5 large numbers 6 small numbers 7 large numbers 8 large numbers 9 small numbers 10 large numbers dtype: category Categories (2, object): [small numbers < large numbers]
qcut() 方法第一个参数是数据,第二个参数定义区间的分割方法,好比这里把数字分红两半,那就是 [0, 0.5, 1] 若是要分红4份,就是 [0, 0.25, 0.5, 0.75, 1] ,也能够不是均分,好比 [0, 0.1, 0.2, 0.3, 1] ,这就就会按照 1:1:1:7 进行分布,好比:blog
data = pd.Series([0,8,1,5,3,7,2,6,10,4,9]) print(pd.qcut(data,[0, 0.1, 0.2, 0.3, 1],labels=['first 10%','second 10%','third 10%','70%']))
0 first 10% 1 70% 2 first 10% 3 70% 4 third 10% 5 70% 6 second 10% 7 70% 8 70% 9 70% 10 70%
dtype: category Categories
(4, object): [first 10% < second 10% < third 10% < 70%]
固然,这里由于数据里有11个数,无法恰好按照 1:1:1:7 分,因此 0和1,都被分到了 'first10%' 这一类.pandas
qcut() 方法第二个参数是要替换的值,就是对应区间的值应该替换成什么值,顺序和区间保持一致就行了,注意有几个区间,就要给几个值,不能多也不能少.class