理解Python數(shù)據(jù)離散化手寫if-elif語句與pandas中cut()方法實現(xiàn)
正文
當(dāng)我們進行數(shù)據(jù)分析時,有時候需要對數(shù)值型數(shù)據(jù)進行離散化,將其劃分為不同的標(biāo)簽或類別。這樣做可以方便我們進行統(tǒng)計和分析,并幫助我們更好地理解數(shù)據(jù)。
在本文中,我們將介紹兩種常見的離散化方法,并提供實現(xiàn)代碼。
方法一:使用條件語句
第一種方法是使用條件語句來顯式地檢查輸入值 x 是否在每個區(qū)間內(nèi),并返回相應(yīng)的標(biāo)簽。這種方法適用于自定義的分段方式,要求手動設(shè)置每個閾值和對應(yīng)的標(biāo)簽。
下面是一個示例函數(shù) transfor_num 的實現(xiàn)代碼:
def transfor_num(x):
if x ==0:
label = '無交易'
elif 0 < x <=0.01:
label = '0-0.01'
elif 0.01 < x <=0.04:
label = '0.01-0.04'
elif 0.04 < x <=0.09:
label = '0.04-0.09'
elif 0.09 < x <=0.49:
label = '0.09-0.49'
elif 0.49 < x <=0.99:
label = '0.49-0.99'
elif 0.99 < x <=4.99:
label = '0.99-4.99'
elif 4.99 < x <=9.99:
label = '4.99-9.99'
elif 9.99 < x <=19.99:
label = '9.99-19.99'
elif 19.99 < x <=49.99:
label = '19.99-49.99'
elif 49.99 < x <=99.99:
label = '49.99-99.99'
elif x > 99.99 :
label = '100及以上'
return label
# 你可以通過調(diào)用 transfor_num(x) 函數(shù)并將所需的值傳遞給 x 參數(shù)來使用該函數(shù)。例如:
label = transfor_num(5.67)
print(label)輸出結(jié)果應(yīng)該是 '0.01-0.04',因為 5.67 在指定的區(qū)間范圍內(nèi)。
方法二:使用 pd.cut() 方法
第二種方法是使用 pandas 庫的 cut() 方法將輸入值 x 映射到不同的標(biāo)簽中,并返回標(biāo)簽。這種方法更加簡潔和易于使用,同時也可以通過調(diào)整 bins 參數(shù)來靈活地控制分段的方式和結(jié)果。
下面是一個示例函數(shù) transfor_num1 的實現(xiàn)代碼:
def transfor_num1(x):
bins = [-1,0, 0.01, 0.04, 0.09, 0.49, 0.99, 4.99, 9.99, 19.99, 49.99, 99.99, float('inf')]
labels = [ '無交易','0-0.01', '0.01-0.04', '0.04-0.09', '0.09-0.49', '0.49-0.99', '0.99-4.99', '4.99-9.99', '9.99-19.99', '19.99-49.99', '49.99-99.99', '100及以上']
return pd.cut(x, bins=bins, labels=labels)你可以通過調(diào)用 transfor_num1(x) 函數(shù)并將所需的值傳遞給 x 參數(shù)來使用該函數(shù)。例如:
import pandas as pd
data = {'transaction': [0, 0.005, 0.0125, 0.044, 0.067, 0.55, 2.99, 8.75, 15.6, 30.25, 80.5, 150]}
df = pd.DataFrame(data)
df['tran_amount_label'] = transfor_num1(df['transaction'])
print(df)
# 輸出結(jié)果將會是如下數(shù)據(jù)框的形式:
transaction tran_amount_label
0 0.00000 無交易
1 0.00500 0-0.01
2 0.01250 0.01-0.04
3 0.04400 0.01-0.04
4 0.06700 0.04-0.09
5 0.55000 0.49-0.99
6 2.99000 0.99-4.99
7 8.75000 4.99-9.99
8 15.60000 9.99-19.99
9 30.25000 19.99-49.99
10 80.50000 49.99-99.99
11 150.00000 100及以上其中 tran_amount_label 是新添加的一列,它顯示了每個交易額所屬的標(biāo)簽和類別。
兩種方法各有優(yōu)缺點。使用條件語句需要手動設(shè)置閾值和對應(yīng)的標(biāo)簽,比較繁瑣;而使用 pd.cut() 方法則可以自動劃分區(qū)間,但其不太靈活。因此,在具體使用時,需要根據(jù)實際情況進行選擇。
希望本文能夠幫助你更好地理解離散化的概念和實現(xiàn)方法,更多關(guān)于Python數(shù)據(jù)離散化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在Python中使用K-Means聚類和PCA主成分分析進行圖像壓縮
這篇文章主要介紹了在Python中使用K-Means聚類和PCA主成分分析進行圖像壓縮,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
利用keras使用神經(jīng)網(wǎng)絡(luò)預(yù)測銷量操作
這篇文章主要介紹了利用keras使用神經(jīng)網(wǎng)絡(luò)預(yù)測銷量操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
pytorch中節(jié)約顯卡內(nèi)存的方法和技巧
顯存不足是很多人感到頭疼的問題,畢竟能擁有大量顯存的實驗室還是少數(shù),而現(xiàn)在的模型已經(jīng)越跑越大,模型參數(shù)量和數(shù)據(jù)集也越來越大,所以這篇文章給大家總結(jié)了一些pytorch中節(jié)約顯卡內(nèi)存的方法和技巧,需要的朋友可以參考下2023-11-11
淺析Python如何輕松實現(xiàn)替換或修改PDF文字
在日常開發(fā)或文檔處理過程中,經(jīng)常會遇到需要對 PDF 文檔中的文字進行修改的場景,本文將分享如何使用該庫在 Python 中實現(xiàn)替換或修改 PDF 文字,希望對大家有所幫助2025-09-09
從原理到實戰(zhàn)詳解Python中文件并發(fā)讀寫的避坑指南
這篇文章主要為大家詳細(xì)介紹了Python中文件并發(fā)讀寫的相關(guān)知識和避坑指南,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-01-01
Python使用MYSQLDB實現(xiàn)從數(shù)據(jù)庫中導(dǎo)出XML文件的方法
這篇文章主要介紹了Python使用MYSQLDB實現(xiàn)從數(shù)據(jù)庫中導(dǎo)出XML文件的方法,涉及Python使用MYSQLDB操作數(shù)據(jù)庫及XML文件的相關(guān)技巧,需要的朋友可以參考下2015-05-05

