python中pd.cut()與pd.qcut()的對(duì)比及示例
1、pd.cut()
用于將數(shù)據(jù)值按照值本身進(jìn)行分段并排序到 bins 中。
參數(shù)包含:x, bins, right, include_lowest, labels, retbins, precision
x :被劃分的數(shù)組
bins :被劃分的區(qū)間/區(qū)間數(shù)
- - ① 當(dāng) bins 為整數(shù)時(shí),表示數(shù)組 x 被劃分為多少個(gè)等間距的區(qū)間;
- - ② 當(dāng) bins 為序列時(shí),表示數(shù)組 x 將被劃分在該指定序列中,若不在則輸出 NaN;
# x = [1,2,3,5,3,4,1], ?bins = 3 [In ] pd.cut(np.array([1,2,3,5,3,4,1]),3) ? [Out] [(0.996, 2.333], (0.996, 2.333], (2.333, 3.667], (3.667, 5.0], (2.333, 3.667], (3.667, 5.0], (0.996, 2.333]] ? ? ? Categories (3, interval[float64]): [(0.996, 2.333] < (2.333, 3.667] < (3.667, 5.0]] # x = [1,2,3,5,3,4,1], ?bins = [1,2,3] [In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3]) [Out] [NaN, (1.0, 2.0], (2.0, 3.0], NaN, (2.0, 3.0], NaN, NaN] ? ? ? Categories (2, interval[int64]): [(1, 2] < (2, 3]]
right :是否包含右端點(diǎn),默認(rèn)為 True;
include_lowest :是否包含左端點(diǎn),默認(rèn)為 False;
# x = [1,2,3,5,3,4,1], ?bins = [1,2,3], 默認(rèn)不包含左端點(diǎn) 1,默認(rèn)包含右端點(diǎn) 3 [In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3]) [Out] [NaN, (1.0, 2.0], (2.0, 3.0], NaN, (2.0, 3.0], NaN, NaN] ? ? ? Categories (2, interval[int64]): [(1, 2] < (2, 3]] # x = [1,2,3,5,3,4,1], ?bins = [1,2,3], 設(shè)置包含左端點(diǎn) 1,設(shè)置包含右端點(diǎn) 3 [In ] pd.cut(np.array([1,2,3,5,3,4,1]),[1,2,3],include_lowest=True,right=False) [Out] [[1.0, 2.0), [2.0, 3.0), NaN, NaN, NaN, NaN, [1.0, 2.0)] ? ? ? Categories (2, interval[int64]): [[1, 2) < [2, 3)]
labels :是否用標(biāo)記來(lái)替代返回的 bins,默認(rèn)為 False,如需標(biāo)記,標(biāo)記數(shù)需與 bins 數(shù)一致,并為 labels 賦值一組列表;
# x = [1,2,3,5,3,4,1], ?bins = 3, 設(shè)置用指定標(biāo)簽 ['A','B','C'] 返回序列 [In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,labels=['A','B','C']) [Out] [A, A, B, C, B, C, A] ? ? ? Categories (3, object): [A < B < C]
retbins : 是否返回間距 bins,默認(rèn)為 False,僅返回 x 中每個(gè)值對(duì)應(yīng)的 bin 的列表,若 retbins = True,則返回 bin 的列表及對(duì)應(yīng)的 bins。
# x = [1,2,3,5,3,4,1], bins = 3, 設(shè)置一并返回對(duì)應(yīng) bins 序列
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,retbins=True)
[Out] ([(0.996, 2.333], (0.996, 2.333], (2.333, 3.667], (3.667, 5.0], (2.333, 3.667], (3.667, 5.0], (0.996, 2.333]]
Categories (3, interval[float64]): [(0.996, 2.333] < (2.333, 3.667] < (3.667, 5.0]],
array([0.996 , 2.33333333, 3.66666667, 5. ]))precision : 精度,區(qū)間邊界值保留的小數(shù)點(diǎn)位數(shù)
# x = [1,2,3,5,3,4,1], bins = 3, 精度為2
[In ] pd.cut(np.array([1,2,3,5,3,4,1]),3,precision=2)
[Out] [(1.0, 2.33], (1.0, 2.33], (2.33, 3.67], (3.67, 5.0], (2.33, 3.67], (3.67, 5.0], (1.0, 2.33]]
Categories (3, interval[float64]): [(1.0, 2.33] < (2.33, 3.67] < (3.67, 5.0]]
2、pd.qcut()
基于分位數(shù)的離散化功能。 根據(jù)等級(jí)或基于樣本分位數(shù)(或者說(shuō)基于樣本值落在區(qū)間的頻率),將變量分離為相等大小的桶。
參數(shù)包含:x, q, labels, retbins, precision, duplicates
- x、labels、retbins、precision 與 pd.cut() 中參數(shù)用法一致;
- q : 將序列 x 劃分為 q 個(gè)區(qū)間,使落在每個(gè)區(qū)間的值的數(shù)量一致;
- duplicates :重復(fù)值處理,默認(rèn)為 duplicates = ‘raise’,表示不忽略重復(fù)值。如需忽略 x 中的重復(fù)值,可指定 duplicates = ‘drop’。
3、pd.cut() v.s. pd.qcut()
- pd.cut() 將指定序列 x,按指定數(shù)量等間距的劃分(根據(jù)值本身而不是這些值的頻率選擇均勻分布的bins),或按照指定間距劃分
- pd.qcut() 將指定序列 x,劃分為 q 個(gè)區(qū)間,使落在每個(gè)區(qū)間的記錄數(shù)一致
[In] ll = [1,2,3,5,3,4,1,2]
?? ? print('- - - pd.cut()示例1 - - -')
? ? ?print(pd.cut(ll, 4, precision=2).value_counts())
? ? ?print('- - - pd.cut()示例2 - - -')
? ? ?print(pd.cut(ll, [1,2,4], precision=2).value_counts())
? ? ?print('- - - pd.qcut()示例 - - -')
? ? ?print(pd.qcut(ll, 4, precision=2).value_counts())
[Out] - - - pd.cut()示例1 - - -
? ? ?(1.0, 2.0] ? ?4
? ? ?(2.0, 3.0] ? ?2
? ? ?(3.0, 4.0] ? ?1
? ? ?(4.0, 5.0] ? ?1
? ? ?dtype: int64
? ? ?- - - pd.cut()示例2 - - -
? ? ?(1, 2] ? ?2
? ? ?(2, 4] ? ?3
? ? ?dtype: int64
? ? ?- - - pd.qcut()示例 - - -
? ? ?(0.99, 1.75] ? ?2
? ? ?(1.75, 2.5] ? ? 2
? ? ?(2.5, 3.25] ? ? 2
? ? ?(3.25, 5.0] ? ? 2
? ? ?dtype: int64到此這篇關(guān)于python中pd.cut()與pd.qcut()的對(duì)比及示例的文章就介紹到這了,更多相關(guān)python pd.cut()與pd.qcut()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何用python合并多個(gè)有規(guī)則命名的nc文件
在地學(xué)領(lǐng)域,nc格式的文件可謂隨處可見,這種文件可以存儲(chǔ)多維數(shù)字矩陣,下面這篇文章主要給大家介紹了關(guān)于如何用python合并多個(gè)有規(guī)則命名的nc文件的相關(guān)資料,需要的朋友可以參考下2022-03-03
Python使用gTTS庫(kù)實(shí)現(xiàn)文本轉(zhuǎn)換為語(yǔ)音的詳細(xì)步驟
文本轉(zhuǎn)換為語(yǔ)音(Text-to-Speech,簡(jiǎn)稱TTS)技術(shù)是人工智能的重要組成部分,廣泛應(yīng)用于智能助手、導(dǎo)航系統(tǒng)、讀屏軟件和智能家居等領(lǐng)域,TTS技術(shù)使得機(jī)器能夠?qū)嫖淖洲D(zhuǎn)換為自然流暢的語(yǔ)音,本文將介紹如何使用Python的gTTS庫(kù)實(shí)現(xiàn)簡(jiǎn)單的TTS功能,需要的朋友可以參考下2024-07-07
淺談keras中的batch_dot,dot方法和TensorFlow的matmul
這篇文章主要介紹了淺談keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python3 字符串知識(shí)點(diǎn)學(xué)習(xí)筆記
字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號(hào)('或")來(lái)創(chuàng)建字符串2020-02-02
Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享前篇
這篇文章主要為大家介紹了Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享前篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
解決Tensorboard 不顯示計(jì)算圖graph的問(wèn)題
今天小編就為大家分享一篇解決Tensorboard 不顯示計(jì)算圖graph的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python簡(jiǎn)單生成隨機(jī)數(shù)的方法示例
這篇文章主要介紹了Python簡(jiǎn)單生成隨機(jī)數(shù)的方法,結(jié)合實(shí)例形式分析了Python基于random模塊生成隨機(jī)數(shù)的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03

