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實(shí)現(xiàn)的簡(jiǎn)單dns查詢功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的簡(jiǎn)單dns查詢功能,結(jié)合實(shí)例形式分析了Python基于socket模塊的dns信息查詢實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05Python sqrt()函數(shù)用法說(shuō)明
這篇文章主要介紹了Python sqrt()函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python 矩陣轉(zhuǎn)置的幾種方法小結(jié)
今天小編就為大家分享一篇Python 矩陣轉(zhuǎn)置的幾種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車票
這篇文章主要為大家詳細(xì)介紹了基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車票,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09python設(shè)置Pyplot的動(dòng)態(tài)rc參數(shù)、繪圖的填充
本文主要介紹了python設(shè)置Pyplot的動(dòng)態(tài)rc參數(shù)、繪圖的填充,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)踩坑(解決model.predict預(yù)測(cè)值全為0.0的問(wèn)題)
這篇文章主要介紹了Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)踩坑(解決model.predict預(yù)測(cè)值全為0.0的問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07python 實(shí)現(xiàn)圖片上傳接口開(kāi)發(fā) 并生成可以訪問(wèn)的圖片url
今天小編就為大家分享一篇python 實(shí)現(xiàn)圖片上傳接口開(kāi)發(fā) 并生成可以訪問(wèn)的圖片url,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12