Pandas數據離散化


  • 連續屬性離散化的目的是為了簡化數據結構,數據離散化技術可以用來減少給定連續屬性值的個數。離散化方法經常作為數據挖掘的工具。
  • 連續屬性的離散化就是將連續屬性的值域上,將值域划分為若干個離散的區間,最后用不同的符號或整數 值代表落在每個子區間中的屬性值。

離散化有很多種方法,這使用一種最簡單的方式去操作,例如:

  • 原始人的身高數據:165,174,160,180,159,163,192,184
  • 假設按照身高分幾個區間段:150~165, 165~180,180~195

1、使用pd.qcut:對數據進行分組

data = pd.Series([0,8,1,5,3,7,2,6,10,4,9])

# qcut()方法第一個參數是數據, 第二個參數定義區間的分割方法, 比如這里把數字分成兩半, 那就是[0, 0.5, 1]
# 如果要分成4份, 就是[0, 0.25, 0.5, 0.75, 1], 也可以不是均分, 比如[0, 0.1, 0.2, 0.3, 1], 這就就會按照1:1:1: 7
# 如果是小的數,值就變成'small number',大的數,值就變成'large number':
qcut = pd.qcut(data,[0,0.5,1],labels=['small number','large number'])

# 自行分組,分成10組
qcut = pd.qcut(data,10)
print(qcut)

# 統計分組次數
print(qcut.value_counts())

2、使用pd.cut(data, bins)自定義區間分組:

  • pd.cut(data, bins)
data = pd.Series([0,8,1,5,3,7,2,6,10,4,9])

# 自己指定分組區間
bins = [1, 2, 4,7,10]
counts = pd.cut(data, bins)
print(counts)
c = counts.value_counts()
print(c)

3、get_dummies實現啞變量矩陣

啞變量:也叫虛擬變量,引入啞變量的目的是,將不能狗定量處理的變量量化,如職業、性別對收入的影響,戰爭、自然災害對GDP的影響,這種“量化”通常是通過引入“啞變量”來完成的。根據這些因素的屬性類型,構造只取“0”或“1”的人工變量

1、離散特征的取值之間沒有大小的意義,比如color:[red,blue],那么就使用one-hot編碼

2、離散特征的取值有大小的意義,比如size:[X,XL,XXL],那么就使用數值的映射{X:1,XL:2,XXL:3}

df = pd.DataFrame([
    ['green', 'M', 10.1, 'class1'],
    ['red', 'L', 13.5, 'class2'],
    ['blue', 'XL', 15.3, 'class1']])

df.columns = ['color', 'size', 'prize', 'class label']

size_mapping = {
    'XL': 3,
    'L': 2,
    'M': 1}
df['size'] = df['size'].map(size_mapping)
#
class_mapping = {label: idx for idx, label in enumerate(set(df['class label']))}
df['class label'] = df['class label'].map(class_mapping)
print(df)
print(pd.get_dummies(df))

 

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM