python中pd.cut()與pd.qcut()的對比及示例
1、pd.cut()
用于將數(shù)據(jù)值按照值本身進行分段并排序到 bins 中。
參數(shù)包含:x, bins, right, include_lowest, labels, retbins, precision
x :被劃分的數(shù)組
bins :被劃分的區(qū)間/區(qū)間數(shù)
- - ① 當 bins 為整數(shù)時,表示數(shù)組 x 被劃分為多少個等間距的區(qū)間;
- - ② 當 bins 為序列時,表示數(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 :是否包含右端點,默認為 True;
include_lowest :是否包含左端點,默認為 False;
# x = [1,2,3,5,3,4,1], ?bins = [1,2,3], 默認不包含左端點 1,默認包含右端點 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è)置包含左端點 1,設(shè)置包含右端點 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 :是否用標記來替代返回的 bins,默認為 False,如需標記,標記數(shù)需與 bins 數(shù)一致,并為 labels 賦值一組列表;
# x = [1,2,3,5,3,4,1], ?bins = 3, 設(shè)置用指定標簽 ['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,默認為 False,僅返回 x 中每個值對應(yīng)的 bin 的列表,若 retbins = True,則返回 bin 的列表及對應(yīng)的 bins。
# x = [1,2,3,5,3,4,1], bins = 3, 設(shè)置一并返回對應(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ù)點位數(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ù)等級或基于樣本分位數(shù)(或者說基于樣本值落在區(qū)間的頻率),將變量分離為相等大小的桶。
參數(shù)包含:x, q, labels, retbins, precision, duplicates
- x、labels、retbins、precision 與 pd.cut() 中參數(shù)用法一致;
- q : 將序列 x 劃分為 q 個區(qū)間,使落在每個區(qū)間的值的數(shù)量一致;
- duplicates :重復(fù)值處理,默認為 duplicates = ‘raise’,表示不忽略重復(fù)值。如需忽略 x 中的重復(fù)值,可指定 duplicates = ‘drop’。
3、pd.cut() v.s. pd.qcut()
- pd.cut() 將指定序列 x,按指定數(shù)量等間距的劃分(根據(jù)值本身而不是這些值的頻率選擇均勻分布的bins),或按照指定間距劃分
- pd.qcut() 將指定序列 x,劃分為 q 個區(qū)間,使落在每個區(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()的對比及示例的文章就介紹到這了,更多相關(guān)python pd.cut()與pd.qcut()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 矩陣轉(zhuǎn)置的幾種方法小結(jié)
今天小編就為大家分享一篇Python 矩陣轉(zhuǎn)置的幾種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12基于Python3.6+splinter實現(xiàn)自動搶火車票
這篇文章主要為大家詳細介紹了基于Python3.6+splinter實現(xiàn)自動搶火車票,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09python設(shè)置Pyplot的動態(tài)rc參數(shù)、繪圖的填充
本文主要介紹了python設(shè)置Pyplot的動態(tài)rc參數(shù)、繪圖的填充,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2022-06-06Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)踩坑(解決model.predict預(yù)測值全為0.0的問題)
這篇文章主要介紹了Keras構(gòu)建神經(jīng)網(wǎng)絡(luò)踩坑(解決model.predict預(yù)測值全為0.0的問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07python 實現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url
今天小編就為大家分享一篇python 實現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12