1、cut方法
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True)
(1)參數
X:被切分的類數組(array-like)數據,必須是1維的。不能是DataFrame。
bins:被切割后的區間,有3中形式:int, sequence of scalars, or IntervalIndex。
int:代表將X平分成bins份,x的范圍在每側擴展0.1%,以包括X的最大值和最小值。
sequence of scalars(標量序列):被分割后每一個bin的區間邊緣,此時x沒有擴展。
IntervalIndex:定義要使用的精確區間。
right:bool型,默認為True。是否包括最右邊的邊緣,比如right=True,bins=[1,2,3,4],則區間為(1,2]、(2,3]、(3,4];right=False,則區間為(1,2)、(2,3)、(3,4)。
labels:給分割后的bins打標簽。必須與箱子長度相同,比如bins=[1,2,3],划分后有兩個區間(1,2]、(2,3],則labels長度必須為2。如果labels=False,則返回X中的數據在第幾個 bin中(從0開始)。
retbins:bool型,默認為False。是否將分割后的bins返回,當bins為一個int型的標量比較有用,這樣可以得到划分后的區間。
precision:保留區間小數點的位數,默認為3.
include_lowest:bool型,默認為False。第一個間隔是否應包含在內。
duplicates:是否允許重復區間。raise:不允許,drop:允許。
ordered:bool型,默認為True。True對結果進行排序,False不排序。
(2)返回值
out:Categorical, Series, or ndarray。分區后x中的每個值在那個bin中,如果指定了labels則返回對應的label。
bins:分割后的區間,當指定retbins為True時返回。
(3)舉例
df = pd.DataFrame([x for x in range(20)],columns=['number',])

df = pd.DataFrame([x**2 for x in range(11)],columns=['number',])
df['cut_group'] = pd.cut(df['number'],4)(按照數據值由小到大的順序將數據分成4份,並且使每組值的范圍大致相等。)

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20])(bins參數:按照指定的邊界值對變量進行分割)

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=False)(right參數:設定分組的開閉區間)

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=False,labels=False)(labels為False,返回值在第幾個bin中)

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=False,labels=['第一','第二','第三','第四','第五',])(返回自定義標簽名)

df['cut_group'],bins = pd.cut(df['number'],4,retbins=True)(retbins參數:獲取邊界值的列表)

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=True,include_lowest=False)(第一)
df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=True,include_lowest=True)(第二)


2、qcut方法
pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
(1)參數
x:一維 ndarray 或系列
q:整數或浮點數的list-like,分位數。 10 表示十分位數,4 表示四分位數等。交替排列的分位數,例如[0, .25, .5, .75, 1.] 四分位數。
labels:數組或假,默認無。用作結果箱的標簽。必須與生成的 bin 長度相同。如果為 False,則僅返回 bin 的整數指示符。如果為 True,則引發錯誤。
retbins:布爾型,可選。是否返回(箱,標簽)。如果 bins 作為標量給出,則可能很有用。
precision:整數,可選。存儲和顯示 bin 標簽的精度。
duplicates:{默認 ‘raise’, ‘drop’},可選。
(2)舉例
df = pd.DataFrame([x**2 for x in range(11)],columns=['number',])
df['cut_group'] = pd.qcut(df['number'],4)(按變量的數量來對變量進行分割,把變量由小到大分成四組,並且讓每組變量的數量相同)

跟cut()一樣, 我們可以通過在qcut()設置retbins參數, 獲取每個分組的邊界值列表。
df['cut_group'] = pd.qcut(df['number'],4,retbins=True)
總結
cut()和qcut()的主要作用都是對變量進行分箱操作。但不同的是,cut()是按變量的值進行划分,而qcut()是按照變量的個數進行划分。
