更新時間:2022年09月01日15時07分 來源:傳智教育 瀏覽次數(shù):
有時候我們會碰到這樣的需求,例如,將有關(guān)年齡的數(shù)據(jù)進行離散化(分桶)或拆分為“面元”,直白來說,就是將年齡分成幾個區(qū)間。Pandas的cut()函數(shù)能夠?qū)崿F(xiàn)離散化操作,該函數(shù)的語法格式如下:
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
上述函數(shù)中常用參數(shù)表示的含義如下:
(1)x:表示要分箱的數(shù)組,必須是一維的。
(2)bins:接收int和序列類型的數(shù)據(jù)。如果傳入的是int類型的值,則表示在x范圍內(nèi)的等寬單元的數(shù)量(劃分為多少個等間距區(qū)間);如果傳入的是一個序列,則表示將x劃分在指定的序列中,若不在此序列中,則為NaN。
(3)right:是否包含右端點,決定區(qū)間的開閉,默認為True。
(4)labels:用于生成區(qū)間的標簽。
(5)retbins:是否返回bin。
(6)precision:精度,默認保留三位小數(shù)。
(7)include_lowest:是否包含左端點。
cut()函數(shù)會返回一個Categorical對象,我們可以將其看作一組表示面元名稱的字符串,它包含了分組的數(shù)量以及不同分類的名稱。
假設(shè)當前有一組年齡數(shù)據(jù),需要將這組年齡數(shù)據(jù)劃分為0~12歲、12~25歲、25~45歲、45~50歲、50歲以上共5種類型,圖4-28是將這些數(shù)據(jù)經(jīng)過面元劃分前后的對比效果。
圖4-28 面元化處理過程