23 資料預處理之資料離散化處理

2021-10-02 16:44:35 字數 1278 閱讀 7106

pandas.cut(x,bins,right=true,labels)

x:資料

bins:離散化的資料,或者切分的區間

labels:離散化後各個類別的標籤

right:是否包含區間右邊的值

#等寬分箱

df['age_bin']=pd.cut(df['age_new'],5,labels=range(5))

#不加標籤 時。將分段的表徵展示出來

df['price_bin']=pd.cut(df['price_new'],bins=5,labels=range(0,5))

df['price_bin']

#以柱狀圖繪製

df['price_bin'].value_counts().plot(kind='bar')

#或df['price_bin'].hist()

#自定義分箱標準

w=[100,1000,5000,10000,20000,100000]

df['price_bin']=pd.cut(df['price_new'],bins=w)

df[['price_bin','price_new']]

df['price_bin']=pd.cut(df['price_new'],bins=w,labels=range(0,5))

df[['price_bin','price_new']]

df['price_bin'].hist()

#等頻分段

#w為分位點,labels是箱子的標籤

k=5w=[1.0*i/k for i in range(k+1)]

w[0.0,0.2,0.4,0.6,0.8,1.0]

#此處分為5段

df['price_bin']=pd.qcut(df['price_new'],q=w,labels=range(5))

df['price_bin'].hist()

#自定義等頻分段,先算出分割點w1

k=5w1=df["price_new"].quantile([1.0*i/k for i in range(k+1)])

#等頻分割點

w1#分段標準的最小值要小於資料的最小值,分段標準的最大值要大於資料的最大值

w1[0]=w[0]*0.95

w1[1.0]=w[1.0]*1.1

df['price_bin']=pd.cut(df['price_new'],bins=w1,labels=range(0,5))

df['price_bin'].hist()

資料離散化處理

離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1,3,4,2 原資料 處理後 例如有時需要將資料直接作為陣列下標,但因為資料太大而無法開陣列時,...

資料離散化處理

離散化處理有幾個方法 方法一 適用於所有情況 sort unique lower bound 三段式 關於這幾個函式請見我的另一篇部落格 1 申請兩個陣列num和numcopy 這個陣列是num的副本 2 利用unique函式對num陣列進行去重 3 利用lower bound函式獲得numcopy...

資料離散化處理

有時候,我們需要使用陣列下標來維護某些資料結構 例如並查集 但如果資料範圍太大我們開不了這麼大的陣列,這時候,我們就要將資料進行離散化。例如資料我們可以根據相對大小關係67542347 75331434 87433476 99844531來開乙個新陣列編號,二分查詢在新陣列裡的編號。如b 1 675...