pd.cut()是把一组数据按照一定bins分割成离散的区间
#参数如下: pd.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
参数解释:
x:被分割的数组数据,可以是df[col],np.array,还可以是pd.seres,list 但是数据必须是一维的
bins:被分割后的区间,有三种形式,int值(如bins=5,就是将x平均分为5位),list或者np.array(如bins=[1,2,3],则将x按照(1,2],(2,3]分割),pandas.IntervalIndex 定义要使用的精确区间
right:bool型参数,默认为True,表示是否包含区间右部
labels:给分割后的区间打标签,但是labels的长度必须和分割后的区间的长度相等
retbins:bool型的参数,表示是否将分割后的bins返回
precision:保留区间小数点的位数,默认为3
include_lowest:bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)
duplicates:是否允许重复区间
返回值:
分割后每个值落在的区间
import numpy as np import pandas as pd from sklearn.datasets import load_iris iris=load_iris() a=np.arange(1,100) #np.array b=[i for i in range(1,100)] #list df=pd.DataFrame(iris.data,columns=iris.feature_names) #df ser=pd.Series(a) #series tp=tuple(a) #tuple pd.cut(a,5) pd.cut(b,5) pd.cut(df['sepal length (cm)'],5) pd.cut(ser,5) pd.cut(tp,5)
运用各种参数
#平均分为5分 pd.cut(a,5) #按照给定区间划分 pd.cut(a,bins=[0,10,20,40,60,100]) #指定labels pd.cut(a,bins=[0,10,20,40,60,100],labels=["婴儿","青年","中年","壮年","老年"]) #返回分割后的bins pd.cut(a,bins=[0,10,20,40,60,100],labels=["婴儿","青年","中年","壮年","老年"],retbins=True) #返回x中的数据位于第几个bin pd.cut(a,bins=[0,10,20,40,60,100],labels=False)