python-pandas.cut()資料分箱
阿新 • • 發佈:2022-04-02
在對資料處理的過程中,經常會用到對不同閾值的資料貼上不同的標籤,或者將連續資料轉換成分類資料,pandas中的cut函式可以較好解決資料劃分不同標籤問題。
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True )
引數解釋:
x : 要進行分割的一維陣列。
bins :整數,標量序列或者間隔索引,是進行分組的依據。
- 如果填入整數n,則表示將x中的數值分成等寬的n份(即每一組內的最大值與最小值之差約相等);
- 如果是標量序列,序列中的數值表示用來分檔的分界值
- 如果是間隔索引,“ bins”的間隔索引必須不重疊
right:布林值,預設為True表示包含最右側的數值。
- 當right = True(預設值)時,則bins=[1、2、3、4]表示(1,2],(2,3],(3,4]
- 當bins是一個間隔索引時,該引數被忽略。
labels : 陣列或布林值,可選.指定分箱的標籤。
- 如果是陣列,長度要與分箱個數一致,比如bins=[1、2、3、4]表示(1,2],(2,3],(3,4]一共3個區間,則labels的長度也就是標籤的個數也要是3 - 如果為False,則僅返回分箱的整數指示符,即x中的資料在第幾個箱子裡。
當bins是間隔索引時,將忽略此引數
retbins:是否顯示分箱的分界值。預設為False,當bins取整數時可以設定retbins=True以顯示分界值,得到劃分後的區間
precision:整數,預設3,儲存和顯示分箱標籤的精度。
include_lowest:布林值,表示區間的左邊是開還是閉,預設為false,也就是不包含區間左邊。
duplicates:如果分箱臨界值不唯一,則引發ValueError或丟棄非唯一。
栗子:
import numpy as np
import pandas as pd
分割成等寬的n等分,bins=n
x = np.array([1, 7, 5, 4, 6, 3]) pd.cut(x, bins=3)
分割等寬n等分並指定標籤
x = np.array([1, 7, 5, 4, 6, 3])
pd.cut(x, bins=3, labels=["bad", "medium", "good"])
只返回bin,設定labels=False
x = np.array([1, 7, 5, 4, 6, 3])
pd.cut(x, bins=3, labels=False)
結果表示數字1在第0號箱子,數字7在第2號箱子....
顯示分界值,retbins=True
bins傳入間隔索引
s = pd.Series(np.array([2, 4, 6, 8, 10]),
index=['a', 'b','c', 'd', 'e'])
pd.cut(s, bins=[0, 2, 4, 6, 8, 10], labels=False, retbins=True, right=False) # 不設定標籤,顯示分界值,不含最右側值
bins傳入間隔索引存在重複資料
s = pd.Series(np.array([2, 4, 6, 8, 10]),
index=['a', 'b','c', 'd', 'e'])
pd.cut(s, bins=[0, 2, 4, 6, 10, 10], labels=False, retbins=True, right=False
, duplicates='drop') # 不設定標籤,顯示分界值,不含最右側值