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...