使用pandas實現連續資料的離散化處理方式

2021-10-22 06:51:38 字數 2606 閱讀 4656

python實現連續資料的離散化處理主要基於兩個函式,pandas.cut和pandas.qcut,前者根據指定分界點對連續資料進行分箱處理,後者則可以根據指定箱子的數量對連續資料進行等寬分箱處理,所謂等寬指的是每個箱子中的資料量是相同的。

下面簡單介紹一下這兩個函式的用法:

# 匯入pandas包

import pandas as pd

ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32] # 待分箱資料

bins = [18, 25, 35, 60, 100] # 指定箱子的分界點

pandas.cut函式 :

cats1 = pd.cut(ages, bins)

cats1

cats1結果:

[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60],

(35, 60], (25, 35]]

length: 12

categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]

# labels引數為false時,返回結果中用不同的整數作為箱子的指示符

cats2 = pd.cut(ages, bins,labels=false)

cats2 # 輸出結果中的數字對應著不同的箱子

cats2結果:

array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int64)

pd.value_counts(cats1) # 對不同箱子中的數進行計數

計數結果:

(18, 25]  5

(35, 60] 3

(25, 35] 3

(60, 100] 1

dtype: int64

pd.cut(ages, [18, 26, 36, 61, 100], right=false) # 指定分箱區間是左閉右開

改變區間開閉結果:

[[18, 26), [18, 26), [18, 26), [26, 36), [18, 26), ..., [26, 36), [61, 100), [36, 61),

[36, 61), [26, 36)]

length: 12

categories (4, interval[int64]): [[18, 26) < [26, 36) < [36, 61) < [61, 100)]

# 可以將想要指定給不同箱子的標籤傳遞給labels引數

group_names = ['youth', 'youngadult', 'middleaged', 'senior']

cuts3 = pd.cut(ages, bins, labels=group_names)

cuts3

cats3結果:

[youth, youth, youth, youngadult, youth, ..., youngadult, senior, middleaged,

middleaged, youngadult]

length: 12

categories (4, object): [youth < youngadult < middleaged < senior]

pandas.qcut函式:

qcats1 = pd.qcut(ages,q=4) # 引數q指定所分箱子的數量

qcats1

qcats1結果:

[(19.999, 22.75], (19.999, 22.75], (22.75, 29.0], (22.75, 29.0], (19.999, 22.75], ...,

(29.0, 38.0], (38.0, 61.0], (38.0, 61.0], (38.0, 61.0], (29.0, 38.0]]

length: 12

categories (4, interval[float64]): [(19.999, 22.75] < (22.75, 29.0] < (29.0, 38.0] <

(38.0, 61.0]]

qcats1.value_counts() # 從輸出結果可以看到每個箱子中的資料量時相同的

計數結果:

(19.999, 22.75] 3

(22.75, 29.0] 3

(29.0, 38.0] 3

(38.0, 61.0] 3

dtype: int64

​​​參考:《利用python進行資料分析》——wes mckinney 第二版

使用Pandas讀取資料

import pandas as pd data path datawarehouse testdata test01.csv df pd.read csv data path,sep t encoding utf 8 header name col1 col2 col3 col4 col5 指定標...

pandas資料拼接的實現示例

一 前言 pandas資料拼接有可能會用到,比如出現重複資料,需要合併兩份資料的交集,並集就是個不錯的選擇,知識追尋者本著技多不壓身的態度蠻學習了一下下 二 資料拼接 在進行學習資料轉換之前,先學習一些數拼接相關的知識 2.1 join 聯結 有關merge操作知識追尋者這邊不提及,有空可能後面會專...

Pandas 稀疏資料結構的實現

目錄 如果資料中有很多nan的值,儲存起來就會浪費空間。為了解決這個問題,pandas引入了一種叫做sparse data的結構,來有效的儲存這些nan的值。我們建立乙個陣列,然後將其大部分資料設定為nan,接著使用這個陣列來建立sparsearray in 1 arr np.random.rand...